Socket
Socket
Sign inDemoInstall

@ngrx/component-store

Package Overview
Dependencies
4
Maintainers
4
Versions
71
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 10.0.0-beta.0 to 10.0.0-beta.1

schematics-core/index.js

116

bundles/ngrx-component-store.umd.js

@@ -334,3 +334,5 @@ (function (global, factory) {

* @return {?}
*/function (error) { return observer.error(error); }),
*/function (error) {
observer.error(error);
}),
next: ( /**

@@ -363,2 +365,10 @@ * @param {?} value

function EffectReturnFn() { }
/**
* @record
*/
function SelectConfig() { }
if (false) {
/** @type {?|undefined} */
SelectConfig.prototype.debounce;
}
/** @type {?} */

@@ -380,2 +390,4 @@ var initialStateToken = new core.InjectionToken('ComponentStore InitState');

this.isInitialized = false;
this.notInitializedErrorMessage = this.constructor.name + " has not been initialized yet. " +
"Please make sure it is initialized before updating/getting.";
// Needs to be after destroy$ is declared because it's used in select.

@@ -439,3 +451,3 @@ this.state$ = this.select(( /**

: // If state was not initialized, we'll throw an error.
rxjs.throwError(Error(_this.constructor.name + " has not been initialized")); })), operators.takeUntil(_this.destroy$))
rxjs.throwError(new Error(_this.notInitializedErrorMessage)); })), operators.takeUntil(_this.destroy$))
.subscribe({

@@ -472,4 +484,10 @@ next: ( /**

ComponentStore.prototype.initState = function (state) {
this.isInitialized = true;
this.stateSubject$.next(state);
var _this = this;
rxjs.scheduled([state], rxjs.queueScheduler).subscribe(( /**
* @param {?} s
* @return {?}
*/function (s) {
_this.isInitialized = true;
_this.stateSubject$.next(s);
}));
};

@@ -491,3 +509,23 @@ /**

/**
* @protected
* @template R
* @param {?=} projector
* @return {?}
*/
ComponentStore.prototype.get = function (projector) {
if (!this.isInitialized) {
throw new Error(this.notInitializedErrorMessage);
}
/** @type {?} */
var value;
this.stateSubject$.pipe(operators.take(1)).subscribe(( /**
* @param {?} state
* @return {?}
*/function (state) {
value = projector ? projector(state) : state;
}));
return ( /** @type {?} */(value));
};
/**
* @template O, R, ProjectorFn
* @param {...?} args

@@ -501,28 +539,27 @@ * @return {?}

}
var _a = processSelectorArgs(args), observables = _a.observables, projector = _a.projector, config = _a.config;
/** @type {?} */
var observable$;
// project is always the last argument, so `pop` it from args.
/** @type {?} */
var projector = args.pop();
if (args.length === 0) {
// If projector was the only argument then we'll use map operator.
observable$ = this.stateSubject$.pipe(debounceSync(), operators.map(projector));
// If there are no Observables to combine, then we'll just map the value.
if (observables.length === 0) {
observable$ = this.stateSubject$.pipe(config.debounce ? debounceSync() : ( /**
* @param {?} source$
* @return {?}
*/function (source$) { return source$; }), operators.map(projector));
}
else {
// If there are multiple arguments, we're chaining selectors, so we need
// If there are multiple arguments, then we're aggregating selectors, so we need
// to take the combineLatest of them before calling the map function.
observable$ = rxjs.combineLatest(args).pipe(
// The most performant way to combine Observables avoiding unnecessary
// emissions and projector calls.
debounceSync(), operators.map(( /**
* @param {?} args
observable$ = rxjs.combineLatest(observables).pipe(config.debounce ? debounceSync() : ( /**
* @param {?} source$
* @return {?}
*/function (args) { return projector.apply(void 0, __spread(args)); })));
*/function (source$) { return source$; }), operators.map(( /**
* @param {?} projectorArgs
* @return {?}
*/function (projectorArgs) { return projector.apply(void 0, __spread(projectorArgs)); })));
}
/** @type {?} */
var distinctSharedObservable$ = observable$.pipe(operators.distinctUntilChanged(), operators.shareReplay({
return (( /** @type {?} */(observable$))).pipe(operators.distinctUntilChanged(), operators.shareReplay({
refCount: true,
bufferSize: 1,
}), operators.takeUntil(this.destroy$));
return distinctSharedObservable$;
};

@@ -591,5 +628,44 @@ /**

ComponentStore.prototype.isInitialized;
/**
* @type {?}
* @private
*/
ComponentStore.prototype.notInitializedErrorMessage;
/** @type {?} */
ComponentStore.prototype.state$;
}
/**
* @template O, R, ProjectorFn
* @param {?} args
* @return {?}
*/
function processSelectorArgs(args) {
/** @type {?} */
var selectorArgs = Array.from(args);
// Assign default values.
/** @type {?} */
var config = { debounce: false };
/** @type {?} */
var projector;
// Last argument is either projector or config
/** @type {?} */
var projectorOrConfig = ( /** @type {?} */(selectorArgs.pop()));
if (typeof projectorOrConfig !== 'function') {
// We got the config as the last argument, replace any default values with it.
config = Object.assign(Object.assign({}, config), projectorOrConfig);
// Pop the next args, which would be the projector fn.
projector = ( /** @type {?} */(selectorArgs.pop()));
}
else {
projector = projectorOrConfig;
}
// The Observables to combine, if there are any.
/** @type {?} */
var observables = ( /** @type {?} */(selectorArgs));
return {
observables: observables,
projector: projector,
config: config,
};
}

@@ -596,0 +672,0 @@ /**

4

bundles/ngrx-component-store.umd.min.js

@@ -1,2 +0,2 @@

!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("rxjs"),require("rxjs/operators"),require("@angular/core")):"function"==typeof define&&define.amd?define("@ngrx/component-store",["exports","rxjs","rxjs/operators","@angular/core"],e):e(((t=t||self).ngrx=t.ngrx||{},t.ngrx["component-store"]={}),t.rxjs,t.rxjs.operators,t.ng.core)}(this,(function(t,e,r,n){"use strict";
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("rxjs"),require("rxjs/operators"),require("@angular/core")):"function"==typeof define&&define.amd?define("@ngrx/component-store",["exports","rxjs","rxjs/operators","@angular/core"],t):t(((e=e||self).ngrx=e.ngrx||{},e.ngrx["component-store"]={}),e.rxjs,e.rxjs.operators,e.ng.core)}(this,(function(e,t,r,n){"use strict";
/*! *****************************************************************************

@@ -15,3 +15,3 @@ Copyright (c) Microsoft Corporation.

PERFORMANCE OF THIS SOFTWARE.
***************************************************************************** */function o(t,e){var r="function"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,o,i=r.call(t),s=[];try{for(;(void 0===e||e-- >0)&&!(n=i.next()).done;)s.push(n.value)}catch(t){o={error:t}}finally{try{n&&!n.done&&(r=i.return)&&r.call(i)}finally{if(o)throw o.error}}return s}function i(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(o(arguments[e]));return t}function s(){return function(t){return new e.Observable((function(r){var n,o,i=new e.Subscription;return i.add(t.subscribe({complete:function(){n&&r.next(o),r.complete()},error:function(t){return r.error(t)},next:function(t){o=t,n||(n=e.asapScheduler.schedule((function(){r.next(o),n=void 0})),i.add(n))}})),i}))}}var u=new n.InjectionToken("ComponentStore InitState"),c=function(){function t(t){this.destroySubject$=new e.ReplaySubject(1),this.destroy$=this.destroySubject$.asObservable(),this.stateSubject$=new e.ReplaySubject(1),this.isInitialized=!1,this.state$=this.select((function(t){return t})),t&&this.initState(t)}return t.prototype.ngOnDestroy=function(){this.stateSubject$.complete(),this.destroySubject$.next()},t.prototype.updater=function(t){var n=this;return(function(i){var s,u=(e.isObservable(i)?i:e.of(i)).pipe(r.concatMap((function(t){return n.isInitialized?e.scheduled([t],e.queueScheduler).pipe(r.withLatestFrom(n.stateSubject$)):e.throwError(Error(n.constructor.name+" has not been initialized"))})),r.takeUntil(n.destroy$)).subscribe({next:function(e){var r=o(e,2),i=r[0],s=r[1];n.stateSubject$.next(t(s,i))},error:function(t){s=t,n.stateSubject$.error(t)}});if(s)throw s;return u})},t.prototype.initState=function(t){this.isInitialized=!0,this.stateSubject$.next(t)},t.prototype.setState=function(t){"function"!=typeof t?this.initState(t):this.updater(t)()},t.prototype.select=function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];var o=t.pop(),u=(0===t.length?this.stateSubject$.pipe(s(),r.map(o)):e.combineLatest(t).pipe(s(),r.map((function(t){return o.apply(void 0,i(t))})))).pipe(r.distinctUntilChanged(),r.shareReplay({refCount:!0,bufferSize:1}),r.takeUntil(this.destroy$));return u},t.prototype.effect=function(t){var n=this,o=new e.Subject;return t(o).pipe(r.takeUntil(this.destroy$)).subscribe(),function(t){return(e.isObservable(t)?t:e.of(t)).pipe(r.takeUntil(n.destroy$)).subscribe((function(t){o.next(t)}))}},t}();c.decorators=[{type:n.Injectable}],c.ctorParameters=function(){return[{type:void 0,decorators:[{type:n.Optional},{type:n.Inject,args:[u]}]}]},t.ComponentStore=c,t.initialStateToken=u,Object.defineProperty(t,"__esModule",{value:!0})}));
***************************************************************************** */function o(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,o,i=r.call(e),s=[];try{for(;(void 0===t||t-- >0)&&!(n=i.next()).done;)s.push(n.value)}catch(e){o={error:e}}finally{try{n&&!n.done&&(r=i.return)&&r.call(i)}finally{if(o)throw o.error}}return s}function i(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(o(arguments[t]));return e}function s(){return function(e){return new t.Observable((function(r){var n,o,i=new t.Subscription;return i.add(e.subscribe({complete:function(){n&&r.next(o),r.complete()},error:function(e){r.error(e)},next:function(e){o=e,n||(n=t.asapScheduler.schedule((function(){r.next(o),n=void 0})),i.add(n))}})),i}))}}var u=new n.InjectionToken("ComponentStore InitState"),c=function(){function e(e){this.destroySubject$=new t.ReplaySubject(1),this.destroy$=this.destroySubject$.asObservable(),this.stateSubject$=new t.ReplaySubject(1),this.isInitialized=!1,this.notInitializedErrorMessage=this.constructor.name+" has not been initialized yet. Please make sure it is initialized before updating/getting.",this.state$=this.select((function(e){return e})),e&&this.initState(e)}return e.prototype.ngOnDestroy=function(){this.stateSubject$.complete(),this.destroySubject$.next()},e.prototype.updater=function(e){var n=this;return(function(i){var s,u=(t.isObservable(i)?i:t.of(i)).pipe(r.concatMap((function(e){return n.isInitialized?t.scheduled([e],t.queueScheduler).pipe(r.withLatestFrom(n.stateSubject$)):t.throwError(new Error(n.notInitializedErrorMessage))})),r.takeUntil(n.destroy$)).subscribe({next:function(t){var r=o(t,2),i=r[0],s=r[1];n.stateSubject$.next(e(s,i))},error:function(e){s=e,n.stateSubject$.error(e)}});if(s)throw s;return u})},e.prototype.initState=function(e){var r=this;t.scheduled([e],t.queueScheduler).subscribe((function(e){r.isInitialized=!0,r.stateSubject$.next(e)}))},e.prototype.setState=function(e){"function"!=typeof e?this.initState(e):this.updater(e)()},e.prototype.get=function(e){if(!this.isInitialized)throw new Error(this.notInitializedErrorMessage);var t;return this.stateSubject$.pipe(r.take(1)).subscribe((function(r){t=e?e(r):r})),t},e.prototype.select=function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];var o=a(e),u=o.observables,c=o.projector,p=o.config;return(0===u.length?this.stateSubject$.pipe(p.debounce?s():function(e){return e},r.map(c)):t.combineLatest(u).pipe(p.debounce?s():function(e){return e},r.map((function(e){return c.apply(void 0,i(e))})))).pipe(r.distinctUntilChanged(),r.shareReplay({refCount:!0,bufferSize:1}),r.takeUntil(this.destroy$))},e.prototype.effect=function(e){var n=this,o=new t.Subject;return e(o).pipe(r.takeUntil(this.destroy$)).subscribe(),function(e){return(t.isObservable(e)?e:t.of(e)).pipe(r.takeUntil(n.destroy$)).subscribe((function(e){o.next(e)}))}},e}();function a(e){var t,r=Array.from(e),n={debounce:!1},o=r.pop();return"function"!=typeof o?(n=Object.assign(Object.assign({},n),o),t=r.pop()):t=o,{observables:r,projector:t,config:n}}c.decorators=[{type:n.Injectable}],c.ctorParameters=function(){return[{type:void 0,decorators:[{type:n.Optional},{type:n.Inject,args:[u]}]}]},e.ComponentStore=c,e.initialStateToken=u,Object.defineProperty(e,"__esModule",{value:!0})}));
//# sourceMappingURL=ngrx-component-store.umd.min.js.map

@@ -1,1 +0,1 @@

{"moduleName":null,"summaries":[{"symbol":{"__symbol":0,"members":[]},"metadata":{"__symbol":1,"members":[]}},{"symbol":{"__symbol":2,"members":[]},"metadata":{"__symbol":3,"members":[]}},{"symbol":{"__symbol":4,"members":[]},"metadata":{"__symbol":5,"members":[]}}],"symbols":[{"__symbol":0,"name":"EffectReturnFn","filePath":"./index"},{"__symbol":1,"name":"EffectReturnFn","filePath":"./public_api"},{"__symbol":2,"name":"initialStateToken","filePath":"./index"},{"__symbol":3,"name":"initialStateToken","filePath":"./public_api"},{"__symbol":4,"name":"ComponentStore","filePath":"./index"},{"__symbol":5,"name":"ComponentStore","filePath":"./public_api"}]}
{"moduleName":null,"summaries":[{"symbol":{"__symbol":0,"members":[]},"metadata":{"__symbol":1,"members":[]}},{"symbol":{"__symbol":2,"members":[]},"metadata":{"__symbol":3,"members":[]}},{"symbol":{"__symbol":4,"members":[]},"metadata":{"__symbol":5,"members":[]}},{"symbol":{"__symbol":6,"members":[]},"metadata":{"__symbol":7,"members":[]}}],"symbols":[{"__symbol":0,"name":"EffectReturnFn","filePath":"./index"},{"__symbol":1,"name":"EffectReturnFn","filePath":"./public_api"},{"__symbol":2,"name":"SelectConfig","filePath":"./index"},{"__symbol":3,"name":"SelectConfig","filePath":"./public_api"},{"__symbol":4,"name":"initialStateToken","filePath":"./index"},{"__symbol":5,"name":"initialStateToken","filePath":"./public_api"},{"__symbol":6,"name":"ComponentStore","filePath":"./index"},{"__symbol":7,"name":"ComponentStore","filePath":"./public_api"}]}

@@ -1,1 +0,1 @@

{"moduleName":null,"summaries":[{"symbol":{"__symbol":0,"members":[]},"metadata":{"__symbol":1,"members":[]}},{"symbol":{"__symbol":2,"members":[]},"metadata":{"__symbol":3,"members":[]}},{"symbol":{"__symbol":4,"members":[]},"metadata":{"__symbol":5,"members":[]}}],"symbols":[{"__symbol":0,"name":"EffectReturnFn","filePath":"./ngrx-component-store"},{"__symbol":1,"name":"EffectReturnFn","filePath":"./index"},{"__symbol":2,"name":"initialStateToken","filePath":"./ngrx-component-store"},{"__symbol":3,"name":"initialStateToken","filePath":"./index"},{"__symbol":4,"name":"ComponentStore","filePath":"./ngrx-component-store"},{"__symbol":5,"name":"ComponentStore","filePath":"./index"}]}
{"moduleName":null,"summaries":[{"symbol":{"__symbol":0,"members":[]},"metadata":{"__symbol":1,"members":[]}},{"symbol":{"__symbol":2,"members":[]},"metadata":{"__symbol":3,"members":[]}},{"symbol":{"__symbol":4,"members":[]},"metadata":{"__symbol":5,"members":[]}},{"symbol":{"__symbol":6,"members":[]},"metadata":{"__symbol":7,"members":[]}}],"symbols":[{"__symbol":0,"name":"EffectReturnFn","filePath":"./ngrx-component-store"},{"__symbol":1,"name":"EffectReturnFn","filePath":"./index"},{"__symbol":2,"name":"SelectConfig","filePath":"./ngrx-component-store"},{"__symbol":3,"name":"SelectConfig","filePath":"./index"},{"__symbol":4,"name":"initialStateToken","filePath":"./ngrx-component-store"},{"__symbol":5,"name":"initialStateToken","filePath":"./index"},{"__symbol":6,"name":"ComponentStore","filePath":"./ngrx-component-store"},{"__symbol":7,"name":"ComponentStore","filePath":"./index"}]}

@@ -1,1 +0,1 @@

{"moduleName":null,"summaries":[{"symbol":{"__symbol":0,"members":[]},"metadata":{"__symbol":1,"members":[]}},{"symbol":{"__symbol":2,"members":[]},"metadata":{"__symbol":3,"members":[]}},{"symbol":{"__symbol":4,"members":[]},"metadata":{"__symbol":5,"members":[]}}],"symbols":[{"__symbol":0,"name":"EffectReturnFn","filePath":"./public_api"},{"__symbol":1,"name":"EffectReturnFn","filePath":"./src/index"},{"__symbol":2,"name":"initialStateToken","filePath":"./public_api"},{"__symbol":3,"name":"initialStateToken","filePath":"./src/index"},{"__symbol":4,"name":"ComponentStore","filePath":"./public_api"},{"__symbol":5,"name":"ComponentStore","filePath":"./src/index"}]}
{"moduleName":null,"summaries":[{"symbol":{"__symbol":0,"members":[]},"metadata":{"__symbol":1,"members":[]}},{"symbol":{"__symbol":2,"members":[]},"metadata":{"__symbol":3,"members":[]}},{"symbol":{"__symbol":4,"members":[]},"metadata":{"__symbol":5,"members":[]}},{"symbol":{"__symbol":6,"members":[]},"metadata":{"__symbol":7,"members":[]}}],"symbols":[{"__symbol":0,"name":"EffectReturnFn","filePath":"./public_api"},{"__symbol":1,"name":"EffectReturnFn","filePath":"./src/index"},{"__symbol":2,"name":"SelectConfig","filePath":"./public_api"},{"__symbol":3,"name":"SelectConfig","filePath":"./src/index"},{"__symbol":4,"name":"initialStateToken","filePath":"./public_api"},{"__symbol":5,"name":"initialStateToken","filePath":"./src/index"},{"__symbol":6,"name":"ComponentStore","filePath":"./public_api"},{"__symbol":7,"name":"ComponentStore","filePath":"./src/index"}]}

@@ -7,3 +7,3 @@ /**

import { isObservable, of, ReplaySubject, throwError, combineLatest, Subject, queueScheduler, scheduled, } from 'rxjs';
import { concatMap, takeUntil, withLatestFrom, map, distinctUntilChanged, shareReplay, } from 'rxjs/operators';
import { concatMap, takeUntil, withLatestFrom, map, distinctUntilChanged, shareReplay, take, } from 'rxjs/operators';
import { debounceSync } from './debounce-sync';

@@ -18,2 +18,10 @@ import { Injectable, Optional, InjectionToken, Inject, } from '@angular/core';

export function EffectReturnFn() { }
/**
* @record
*/
export function SelectConfig() { }
if (false) {
/** @type {?|undefined} */
SelectConfig.prototype.debounce;
}
/** @type {?} */

@@ -35,2 +43,4 @@ export const initialStateToken = new InjectionToken('ComponentStore InitState');

this.isInitialized = false;
this.notInitializedErrorMessage = `${this.constructor.name} has not been initialized yet. ` +
`Please make sure it is initialized before updating/getting.`;
// Needs to be after destroy$ is declared because it's used in select.

@@ -96,3 +106,3 @@ this.state$ = this.select((/**

: // If state was not initialized, we'll throw an error.
throwError(Error(`${this.constructor.name} has not been initialized`)))), takeUntil(this.destroy$))
throwError(new Error(this.notInitializedErrorMessage)))), takeUntil(this.destroy$))
.subscribe({

@@ -130,4 +140,10 @@ next: (/**

initState(state) {
this.isInitialized = true;
this.stateSubject$.next(state);
scheduled([state], queueScheduler).subscribe((/**
* @param {?} s
* @return {?}
*/
(s) => {
this.isInitialized = true;
this.stateSubject$.next(s);
}));
}

@@ -149,3 +165,24 @@ /**

/**
* @protected
* @template R
* @param {?=} projector
* @return {?}
*/
get(projector) {
if (!this.isInitialized) {
throw new Error(this.notInitializedErrorMessage);
}
/** @type {?} */
let value;
this.stateSubject$.pipe(take(1)).subscribe((/**
* @param {?} state
* @return {?}
*/
(state) => {
value = projector ? projector(state) : state;
}));
return (/** @type {?} */ (value));
}
/**
* @template O, R, ProjectorFn
* @param {...?} args

@@ -155,29 +192,30 @@ * @return {?}

select(...args) {
const { observables, projector, config } = processSelectorArgs(args);
/** @type {?} */
let observable$;
// project is always the last argument, so `pop` it from args.
/** @type {?} */
const projector = args.pop();
if (args.length === 0) {
// If projector was the only argument then we'll use map operator.
observable$ = this.stateSubject$.pipe(debounceSync(), map(projector));
// If there are no Observables to combine, then we'll just map the value.
if (observables.length === 0) {
observable$ = this.stateSubject$.pipe(config.debounce ? debounceSync() : (/**
* @param {?} source$
* @return {?}
*/
(source$) => source$), map(projector));
}
else {
// If there are multiple arguments, we're chaining selectors, so we need
// If there are multiple arguments, then we're aggregating selectors, so we need
// to take the combineLatest of them before calling the map function.
observable$ = combineLatest(args).pipe(
// The most performant way to combine Observables avoiding unnecessary
// emissions and projector calls.
debounceSync(), map((/**
* @param {?} args
observable$ = combineLatest(observables).pipe(config.debounce ? debounceSync() : (/**
* @param {?} source$
* @return {?}
*/
(args) => projector(...args))));
(source$) => source$), map((/**
* @param {?} projectorArgs
* @return {?}
*/
(projectorArgs) => projector(...projectorArgs))));
}
/** @type {?} */
const distinctSharedObservable$ = observable$.pipe(distinctUntilChanged(), shareReplay({
return ((/** @type {?} */ (observable$))).pipe(distinctUntilChanged(), shareReplay({
refCount: true,
bufferSize: 1,
}), takeUntil(this.destroy$));
return distinctSharedObservable$;
}

@@ -246,5 +284,44 @@ /**

ComponentStore.prototype.isInitialized;
/**
* @type {?}
* @private
*/
ComponentStore.prototype.notInitializedErrorMessage;
/** @type {?} */
ComponentStore.prototype.state$;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LXN0b3JlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9jb21wb25lbnQtc3RvcmUvc3JjL2NvbXBvbmVudC1zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFDTCxZQUFZLEVBRVosRUFBRSxFQUNGLGFBQWEsRUFFYixVQUFVLEVBQ1YsYUFBYSxFQUNiLE9BQU8sRUFDUCxjQUFjLEVBQ2QsU0FBUyxHQUNWLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUNMLFNBQVMsRUFDVCxTQUFTLEVBQ1QsY0FBYyxFQUNkLEdBQUcsRUFDSCxvQkFBb0IsRUFDcEIsV0FBVyxHQUNaLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCxVQUFVLEVBRVYsUUFBUSxFQUNSLGNBQWMsRUFDZCxNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7QUFNdkIsb0NBR0M7O0FBRUQsTUFBTSxPQUFPLGlCQUFpQixHQUFHLElBQUksY0FBYyxDQUFDLDBCQUEwQixDQUFDOzs7O0FBRy9FLE1BQU0sT0FBTyxjQUFjOzs7O0lBV3pCLFlBQW1ELFlBQWdCOztRQVRsRCxvQkFBZSxHQUFHLElBQUksYUFBYSxDQUFPLENBQUMsQ0FBQyxDQUFDOztRQUVyRCxhQUFRLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUV2QyxrQkFBYSxHQUFHLElBQUksYUFBYSxDQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ2pELGtCQUFhLEdBQUcsS0FBSyxDQUFDOztRQUVyQixXQUFNLEdBQWtCLElBQUksQ0FBQyxNQUFNOzs7O1FBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBQyxDQUFDO1FBR3JELG1FQUFtRTtRQUNuRSxJQUFJLFlBQVksRUFBRTtZQUNoQixJQUFJLENB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LFNBQUMsaUJBQWlCOzs7Ozs7O0lBVGpELHlDQUE4RDs7SUFFOUQsa0NBQXdEOzs7OztJQUV4RCx1Q0FBeUQ7Ozs7O0lBQ3pELHVDQUE4Qjs7SUFFOUIsZ0NBQXVEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgaXNPYnNlcnZhYmxlLFxuICBPYnNlcnZhYmxlLFxuICBvZixcbiAgUmVwbGF5U3ViamVjdCxcbiAgU3Vic2NyaXB0aW9uLFxuICB0aHJvd0Vycm9yLFxuICBjb21iaW5lTGF0ZXN0LFxuICBTdWJqZWN0LFxuICBxdWV1ZVNjaGVkdWxlcixcbiAgc2NoZWR1bGVkLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIGNvbmNhdE1hcCxcbiAgdGFrZVVudGlsLFxuICB3aXRoTGF0ZXN0RnJvbSxcbiAgbWFwLFxuICBkaXN0aW5jdFVudGlsQ2hhbmdlZCxcbiAgc2hhcmVSZXBsYXksXG59IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IGRlYm91bmNlU3luYyB9IGZyb20gJy4vZGVib3VuY2Utc3luYyc7XG5pbXBvcnQge1xuICBJbmplY3RhYmxlLFxuICBPbkRlc3Ryb3ksXG4gIE9wdGlvbmFsLFxuICBJbmplY3Rpb25Ub2tlbixcbiAgSW5qZWN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBSZXR1cm4gdHlwZSBvZiB0aGUgZWZmZWN0LCB0aGF0IGJlaGF2ZXMgZGlmZmVyZW50bHkgYmFzZWQgb24gd2hldGhlciB0aGVcbiAqIGFyZ3VtZW50IGlzIHBhc3NlZCB0byB0aGUgY2FsbGJhY2suXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRWZmZWN0UmV0dXJuRm48VD4ge1xuICAoKTogdm9pZDtcbiAgKHQ6IFQgfCBPYnNlcnZhYmxlPFQ+KTogU3Vic2NyaXB0aW9uO1xufVxuXG5leHBvcnQgY29uc3QgaW5pdGlhbFN0YXRlVG9rZW4gPSBuZXcgSW5qZWN0aW9uVG9rZW4oJ0NvbXBvbmVudFN0b3JlIEluaXRTdGF0ZScpO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ29tcG9uZW50U3RvcmU8VCBleHRlbmRzIG9iamVjdD4gaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAvLyBTaG91bGQgYmUgdXNlZCBvbmx5IGluIG5nT25EZXN0cm95LlxuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3lTdWJqZWN0JCA9IG5ldyBSZXBsYXlTdWJqZWN0PHZvaWQ+KDEpO1xuICAvLyBFeHBvc2VkIHRvIGFueSBleHRlbmRpbmcgU3RvcmUgdG8gYmUgdXNlZCBmb3IgdGhlIHRlYXJkb3ducy5cbiAgcmVhZG9ubHkgZGVzdHJveSQgPSB0aGlzLmRlc3Ryb3lTdWJqZWN0JC5hc09ic2VydmFibGUoKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHN0YXRlU3ViamVjdCQgPSBuZXcgUmVwbGF5U3ViamVjdDxUPigxKTtcbiAgcHJpdmF0ZSBpc0luaXRpYWxpemVkID0gZmFsc2U7XG4gIC8vIE5lZWRzIHRvIGJlIGFmdGVyIGRlc3Ryb3kkIGlzIGRlY2xhcmVkIGJlY2F1c2UgaXQncyB1c2VkIGluIHNlbGVjdC5cbiAgcmVhZG9ubHkgc3RhdGUkOiBPYnNlcnZhYmxlPFQ+ID0gdGhpcy5zZWxlY3QoKHMpID0+IHMpO1xuXG4gIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIEBJbmplY3QoaW5pdGlhbFN0YXRlVG9rZW4pIGRlZmF1bHRTdGF0ZT86IFQpIHtcbiAgICAvLyBTdGF0ZSBjYW4gYmUgaW5pdGlhbGl6ZWQgZWl0aGVyIHRocm91Z2ggY29uc3RydWN0b3Igb3Igc2V0U3RhdGUuXG4gICAgaWYgKGRlZmF1bHRTdGF0ZSkge1xuICAgICAgdGhpcy5pbml0U3RhdGUoZGVmYXVsdFN0YXRlKTtcbiAgICB9XG4gIH1cblxuICAvKiogQ29tcGxldGVzIGFsbCByZWxldmFudCBPYnNlcnZhYmxlIHN0cmVhbXMuICovXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuc3RhdGVTdWJqZWN0JC5jb21wbGV0ZSgpO1xuICAgIHRoaXMuZGVzdHJveVN1YmplY3QkLm5leHQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIHVwZGF0ZXIuXG4gICAqXG4gICAqIFRocm93cyBhbiBlcnJvciBpZiB1cGRhdGVyIGlzIGNhbGxlZCB3aXRoIHN5bmNocm9ub3VzIHZhbHVlcyAoZWl0aGVyXG4gICAqIGltcGVyYXRpdmUgdmFsdWUgb3IgT2JzZXJ2YWJsZSB0aGF0IGlzIHN5bmNocm9ub3VzKSBiZWZvcmUgQ29tcG9uZW50U3RvcmVcbiAgICogaXMgaW5pdGlhbGl6ZWQuIElmIGNhbGxlZCB3aXRoIGFzeW5jIE9ic2VydmFibGUgYmVmb3JlIGluaXRpYWxpemF0aW9uIHRoZW5cbiAgICogc3RhdGUgd2lsbCBub3QgYmUgdXBkYXRlZCBhbmQgc3Vic2NyaXB0aW9uIHdvdWxkIGJlIGNsb3NlZC5cbiAgICpcbiAgICogQHBhcmFtIHVwZGF0ZXJGbiBBIHN0YXRpYyB1cGRhdGVyIGZ1bmN0aW9uIHRoYXQgdGFrZXMgMiBwYXJhbWV0ZXJzICh0aGVcbiAgICogY3VycmVudCBzdGF0ZSBhbmQgYW4gYXJndW1lbnQgb2JqZWN0KSBhbmQgcmV0dXJucyBhIG5ldyBpbnN0YW5jZSBvZiB0aGVcbiAgICogc3RhdGUuXG4gICAqIEByZXR1cm4gQSBmdW5jdGlvbiB0aGF0IGFjY2VwdHMgb25lIGFyZ3VtZW50IHdoaWNoIGlzIGZvcndhcmRlZCBhcyB0aGVcbiAgICogICAgIHNlY29uZCBhcmd1bWVudCB0byBgdXBkYXRlckZuYC4gRXZlcnl0aW1lIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkXG4gICAqICAgICBzdWJzY3JpYmVycyB3aWxsIGJlIG5vdGlmaWVkIG9mIHRoZSBzdGF0ZSBjaGFuZ2UuXG4gICAqL1xuICB1cGRhdGVyPFY+KFxuICAgIHVwZGF0ZXJGbjogKHN0YXRlOiBULCB2YWx1ZTogVikgPT4gVFxuICApOiB1bmtub3duIGV4dGVuZHMgViA/ICgpID0+IHZvaWQgOiAodDogViB8IE9ic2VydmFibGU8Vj4pID0+IFN1YnNjcmlwdGlvbiB7XG4gICAgcmV0dXJuICgob2JzZXJ2YWJsZU9yVmFsdWU/OiBWIHwgT2JzZXJ2YWJsZTxWPik6IFN1YnNjcmlwdGlvbiA9PiB7XG4gICAgICBsZXQgaW5pdGlhbGl6YXRpb25FcnJvcjogRXJyb3IgfCB1bmRlZmluZWQ7XG4gICAgICAvLyBXZSBjYW4gcmVjZWl2ZSBlaXRoZXIgdGhlIHZhbHVlIG9yIGFuIG9ic2VydmFibGUuIEluIGNhc2UgaXQncyBhXG4gICAgICAvLyBzaW1wbGUgdmFsdWUsIHdlJ2xsIHdyYXAgaXQgd2l0aCBgb2ZgIG9wZXJhdG9yIHRvIHR1cm4gaXQgaW50b1xuICAgICAgLy8gT2JzZXJ2YWJsZS5cbiAgICAgIGNvbnN0IG9ic2VydmFibGUkID0gaXNPYnNlcnZhYmxlKG9ic2VydmFibGVPclZhbHVlKVxuICAgICAgICA/IG9ic2VydmFibGVPclZhbHVlXG4gICAgICAgIDogb2Yob2JzZXJ2YWJsZU9yVmFsdWUpO1xuICAgICAgY29uc3Qgc3Vic2NyaXB0aW9uID0gb2JzZXJ2YWJsZSRcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgY29uY2F0TWFwKCh2YWx1ZSkgPT5cbiAgICAgICAgICAgIHRoaXMuaXNJbml0aWFsaXplZFxuICAgICAgICAgICAgICA/IC8vIFB1c2ggdGhlIHZhbHVlIGludG8gcXVldWVTY2hlZHVsZXJcbiAgICAgICAgICAgICAgICBzY2hlZHVsZWQoW3ZhbHVlXSwgcXVldWVTY2hlZHVsZXIpLnBpcGUoXG4gICAgICAgICAgICAgICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0YXRlU3ViamVjdCQpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICA6IC8vIElmIHN0YXRlIHdhcyBub3QgaW5pdGlhbGl6ZWQsIHdlJ2xsIHRocm93IGFuIGVycm9yLlxuICAgICAgICAgICAgICAgIHRocm93RXJyb3IoXG4gICAgICAgICAgICAgICAgICBFcnJvcihgJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9IGhhcyBub3QgYmVlbiBpbml0aWFsaXplZGApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICksXG4gICAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgICAgbmV4dDogKFt2YWx1ZSwgY3VycmVudFN0YXRlXSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZVN1YmplY3QkLm5leHQodXBkYXRlckZuKGN1cnJlbnRTdGF0ZSwgdmFsdWUhKSk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBlcnJvcjogKGVycm9yOiBFcnJvcikgPT4ge1xuICAgICAgICAgICAgaW5pdGlhbGl6YXRpb25FcnJvciA9IGVycm9yO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZVN1YmplY3QkLmVycm9yKGVycm9yKTtcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcblxuICAgICAgaWYgKGluaXRpYWxpemF0aW9uRXJyb3IpIHtcbiAgICAgICAgLy8gcHJldHRpZXItaWdub3JlXG4gICAgICAgIHRocm93IC8qKiBAdHlwZSB7IUVycm9yfSAqLyAoaW5pdGlhbGl6YXRpb25FcnJvcik7XG4gICAgICB9XG4gICAgICByZXR1cm4gc3Vic2NyaXB0aW9uO1xuICAgIH0pIGFzIHVua25vd24gZXh0ZW5kcyBWXG4gICAgICA/ICgpID0+IHZvaWRcbiAgICAgIDogKHQ6IFYgfCBPYnNlcnZhYmxlPFY+KSA9PiBTdWJzY3JpcHRpb247XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZXMgc3RhdGUuIElmIGl0IHdhcyBhbHJlYWR5IGluaXRpYWxpemVkIHRoZW4gaXQgcmVzZXRzIHRoZVxuICAgKiBzdGF0ZS5cbiAgICovXG4gIHByaXZhdGUgaW5pdFN0YXRlKHN0YXRlOiBUKTogdm9pZCB7XG4gICAgdGhpcy5pc0luaXRpYWxpemVkID0gdHJ1ZTtcbiAgICB0aGlzLnN0YXRlU3ViamVjdCQubmV4dChzdGF0ZSk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgc3RhdGUgc3BlY2lmaWMgdmFsdWUuXG4gICAqIEBwYXJhbSBzdGF0ZU9yVXBkYXRlckZuIG9iamVjdCBvZiB0aGUgc2FtZSB0eXBlIGFzIHRoZSBzdGF0ZSBvciBhblxuICAgKiB1cGRhdGVyRm4sIHJldHVybmluZyBzdWNoIG9iamVjdC5cbiAgICovXG4gIHNldFN0YXRlKHN0YXRlT3JVcGRhdGVyRm46IFQgfCAoKHN0YXRlOiBUKSA9PiBUKSk6IHZvaWQge1xuICAgIGlmICh0eXBlb2Ygc3RhdGVPclVwZGF0ZXJGbiAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhpcy5pbml0U3RhdGUoc3RhdGVPclVwZGF0ZXJGbik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudXBkYXRlcihzdGF0ZU9yVXBkYXRlckZuIGFzIChzdGF0ZTogVCkgPT4gVCkoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIHNlbGVjdG9yLlxuICAgKlxuICAgKiBUaGlzIHN1cHBvcnRzIGNoYWluaW5nIHVwIHRvIDQgc2VsZWN0b3JzLiBNb3JlIGNvdWxkIGJlIGFkZGVkIGFzIG5lZWRlZC5cbiAgICpcbiAgICogQHBhcmFtIHByb2plY3RvciBBIHB1cmUgcHJvamVjdGlvbiBmdW5jdGlvbiB0aGF0IHRha2VzIHRoZSBjdXJyZW50IHN0YXRlIGFuZFxuICAgKiAgIHJldHVybnMgc29tZSBuZXcgc2xpY2UvcHJvamVjdGlvbiBvZiB0aGF0IHN0YXRlLlxuICAgKiBAcmV0dXJuIEFuIG9ic2VydmFibGUgb2YgdGhlIHByb2plY3RvciByZXN1bHRzLlxuICAgKi9cbiAgc2VsZWN0PFI+KHByb2plY3RvcjogKHM6IFQpID0+IFIpOiBPYnNlcnZhYmxlPFI+O1xuICBzZWxlY3Q8UiwgUzE+KHMxOiBPYnNlcnZhYmxlPFMxPiwgcHJvamVjdG9yOiAoczE6IFMxKSA9PiBSKTogT2JzZXJ2YWJsZTxSPjtcbiAgc2VsZWN0PFIsIFMxLCBTMj4oXG4gICAgczE6IE9ic2VydmFibGU8UzE+LFxuICAgIHMyOiBPYnNlcnZhYmxlPFMyPixcbiAgICBwcm9qZWN0b3I6IChzMTogUzEsIHMyOiBTMikgPT4gUlxuICApOiBPYnNlcnZhYmxlPFI+O1xuICBzZWxlY3Q8UiwgUzEsIFMyLCBTMz4oXG4gICAgczE6IE9ic2VydmFibGU8UzE+LFxuICAgIHMyOiBPYnNlcnZhYmxlPFMyPixcbiAgICBzMzogT2JzZXJ2YWJsZTxTMz4sXG4gICAgcHJvamVjdG9yOiAoczE6IFMxLCBzMjogUzIsIHMzOiBTMykgPT4gUlxuICApOiBPYnNlcnZhYmxlPFI+O1xuICBzZWxlY3Q8UiwgUzEsIFMyLCBTMywgUzQ+KFxuICAgIHMxOiBPYnNlcnZhYmxlPFMxPixcbiAgICBzMjogT2JzZXJ2YWJsZTxTMj4sXG4gICAgczM6IE9ic2VydmFibGU8UzM+LFxuICAgIHM0OiBPYnNlcnZhYmxlPFM0PixcbiAgICBwcm9qZWN0b3I6IChzMTogUzEsIHMyOiBTMiwgczM6IFMzLCBzNDogUzQpID0+IFJcbiAgKTogT2JzZXJ2YWJsZTxSPjtcbiAgc2VsZWN0PFI+KC4uLmFyZ3M6IGFueVtdKTogT2JzZXJ2YWJsZTxSPiB7XG4gICAgbGV0IG9ic2VydmFibGUkOiBPYnNlcnZhYmxlPFI+O1xuICAgIC8vIHByb2plY3QgaXMgYWx3YXlzIHRoZSBsYXN0IGFyZ3VtZW50LCBzbyBgcG9wYCBpdCBmcm9tIGFyZ3MuXG4gICAgY29uc3QgcHJvamVjdG9yOiAoLi4uYXJnczogYW55W10pID0+IFIgPSBhcmdzLnBvcCgpO1xuICAgIGlmIChhcmdzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgLy8gSWYgcHJvamVjdG9yIHdhcyB0aGUgb25seSBhcmd1bWVudCB0aGVuIHdlJ2xsIHVzZSBtYXAgb3BlcmF0b3IuXG4gICAgICBvYnNlcnZhYmxlJCA9IHRoaXMuc3RhdGVTdWJqZWN0JC5waXBlKGRlYm91bmNlU3luYygpLCBtYXAocHJvamVjdG9yKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIElmIHRoZXJlIGFyZSBtdWx0aXBsZSBhcmd1bWVudHMsIHdlJ3JlIGNoYWluaW5nIHNlbGVjdG9ycywgc28gd2UgbmVlZFxuICAgICAgLy8gdG8gdGFrZSB0aGUgY29tYmluZUxhdGVzdCBvZiB0aGVtIGJlZm9yZSBjYWxsaW5nIHRoZSBtYXAgZnVuY3Rpb24uXG4gICAgICBvYnNlcnZhYmxlJCA9IGNvbWJpbmVMYXRlc3QoYXJncykucGlwZShcbiAgICAgICAgLy8gVGhlIG1vc3QgcGVyZm9ybWFudCB3YXkgdG8gY29tYmluZSBPYnNlcnZhYmxlcyBhdm9pZGluZyB1bm5lY2Vzc2FyeVxuICAgICAgICAvLyBlbWlzc2lvbnMgYW5kIHByb2plY3RvciBjYWxscy5cbiAgICAgICAgZGVib3VuY2VTeW5jKCksXG4gICAgICAgIG1hcCgoYXJnczogYW55W10pID0+IHByb2plY3RvciguLi5hcmdzKSlcbiAgICAgICk7XG4gICAgfVxuICAgIGNvbnN0IGRpc3RpbmN0U2hhcmVkT2JzZXJ2YWJsZSQgPSBvYnNlcnZhYmxlJC5waXBlKFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgIHNoYXJlUmVwbGF5KHtcbiAgICAgICAgcmVmQ291bnQ6IHRydWUsXG4gICAgICAgIGJ1ZmZlclNpemU6IDEsXG4gICAgICB9KSxcbiAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKVxuICAgICk7XG4gICAgcmV0dXJuIGRpc3RpbmN0U2hhcmVkT2JzZXJ2YWJsZSQ7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBlZmZlY3QuXG4gICAqXG4gICAqIFRoaXMgZWZmZWN0IGlzIHN1YnNjcmliZWQgdG8gZm9yIHRoZSBsaWZlIG9mIHRoZSBAQ29tcG9uZW50LlxuICAgKiBAcGFyYW0gZ2VuZXJhdG9yIEEgZnVuY3Rpb24gdGhhdCB0YWtlcyBhbiBvcmlnaW4gT2JzZXJ2YWJsZSBpbnB1dCBhbmRcbiAgICogICAgIHJldHVybnMgYW4gT2JzZXJ2YWJsZS4gVGhlIE9ic2VydmFibGUgdGhhdCBpcyByZXR1cm5lZCB3aWxsIGJlXG4gICAqICAgICBzdWJzY3JpYmVkIHRvIGZvciB0aGUgbGlmZSBvZiB0aGUgY29tcG9uZW50LlxuICAgKiBAcmV0dXJuIEEgZnVuY3Rpb24gdGhhdCwgd2hlbiBjYWxsZWQsIHdpbGwgdHJpZ2dlciB0aGUgb3JpZ2luIE9ic2VydmFibGUuXG4gICAqL1xuICBlZmZlY3Q8ViwgUiA9IHVua25vd24+KFxuICAgIGdlbmVyYXRvcjogKG9yaWdpbiQ6IE9ic2VydmFibGU8Vj4pID0+IE9ic2VydmFibGU8Uj5cbiAgKTogRWZmZWN0UmV0dXJuRm48Vj4ge1xuICAgIGNvbnN0IG9yaWdpbiQgPSBuZXcgU3ViamVjdDxWPigpO1xuICAgIGdlbmVyYXRvcihvcmlnaW4kKVxuICAgICAgLy8gdGllZCB0byB0aGUgbGlmZWN5Y2xlIPCfkYcgb2YgQ29tcG9uZW50U3RvcmVcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgIC5zdWJzY3JpYmUoKTtcblxuICAgIHJldHVybiAob2JzZXJ2YWJsZU9yVmFsdWU/OiBWIHwgT2JzZXJ2YWJsZTxWPik6IFN1YnNjcmlwdGlvbiA9PiB7XG4gICAgICBjb25zdCBvYnNlcnZhYmxlJCA9IGlzT2JzZXJ2YWJsZShvYnNlcnZhYmxlT3JWYWx1ZSlcbiAgICAgICAgPyBvYnNlcnZhYmxlT3JWYWx1ZVxuICAgICAgICA6IG9mKG9ic2VydmFibGVPclZhbHVlKTtcbiAgICAgIHJldHVybiBvYnNlcnZhYmxlJC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgICAvLyBhbnkgbmV3IPCfkYcgdmFsdWUgaXMgcHVzaGVkIGludG8gYSBzdHJlYW1cbiAgICAgICAgb3JpZ2luJC5uZXh0KHZhbHVlKTtcbiAgICAgIH0pO1xuICAgIH07XG4gIH1cbn1cbiJdfQ==
/**
* @template O, R, ProjectorFn
* @param {?} args
* @return {?}
*/
function processSelectorArgs(args) {
/** @type {?} */
const selectorArgs = Array.from(args);
// Assign default values.
/** @type {?} */
let config = { debounce: false };
/** @type {?} */
let projector;
// Last argument is either projector or config
/** @type {?} */
const projectorOrConfig = (/** @type {?} */ (selectorArgs.pop()));
if (typeof projectorOrConfig !== 'function') {
// We got the config as the last argument, replace any default values with it.
config = Object.assign(Object.assign({}, config), projectorOrConfig);
// Pop the next args, which would be the projector fn.
projector = (/** @type {?} */ (selectorArgs.pop()));
}
else {
projector = projectorOrConfig;
}
// The Observables to combine, if there are any.
/** @type {?} */
const observables = (/** @type {?} */ (selectorArgs));
return {
observables,
projector,
config,
};
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LXN0b3JlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9jb21wb25lbnQtc3RvcmUvc3JjL2NvbXBvbmVudC1zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFDTCxZQUFZLEVBRVosRUFBRSxFQUNGLGFBQWEsRUFFYixVQUFVLEVBQ1YsYUFBYSxFQUNiLE9BQU8sRUFDUCxjQUFjLEVBQ2QsU0FBUyxHQUNWLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUNMLFNBQVMsRUFDVCxTQUFTLEVBQ1QsY0FBYyxFQUNkLEdBQUcsRUFDSCxvQkFBb0IsRUFDcEIsV0FBVyxFQUNYLElBQUksR0FDTCxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsVUFBVSxFQUVWLFFBQVEsRUFDUixjQUFjLEVBQ2QsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDOzs7Ozs7O0FBTXZCLG9DQUdDOzs7O0FBRUQsa0NBRUM7OztJQURDLGdDQUFtQjs7O0FBR3JCLE1BQU0sT0FBTyxpQkFBaUIsR0FBRyxJQUFJLGNBQWMsQ0FBQywwQkFBMEIsQ0FBQzs7OztBQUcvRSxNQUFNLE9BQU8sY0FBYzs7OztJQWN6QixZQUFtRCxZQUFnQjs7UUFabEQsb0JBQWUsR0FBRyxJQUFJLGFBQWEsQ0FBTyxDQUFDLENBQUMsQ0FBQzs7UUFFckQsYUFBUSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLENBQUM7UUFFdkMsa0JBQWEsR0FBRyxJQUFJLGFBQWEsQ0FBSSxDQUFDLENBQUMsQ0FBQztRQUNqRCxrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUN0QiwrQkFBMEIsR0FDaEMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksaUNBQWlDO1lBQ3pELDZEQUE2RCxDQUFDOztRQUV2RCxXQUFNLEdB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QVksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQzs7O1FBRWpDLE1BQU0sR0FBMkIsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFOztRQUNwRCxTQUFzQjs7O1VBRXBCLGlCQUFpQixHQUFHLG1CQUFBLFlBQVksQ0FBQyxHQUFHLEVBQUUsRUFBOEI7SUFFMUUsSUFBSSxPQUFPLGlCQUFpQixLQUFLLFVBQVUsRUFBRTtRQUMzQyw4RUFBOEU7UUFDOUUsTUFBTSxtQ0FBUSxNQUFNLEdBQUssaUJBQWlCLENBQUUsQ0FBQztRQUM3QyxzREFBc0Q7UUFDdEQsU0FBUyxHQUFHLG1CQUFBLFlBQVksQ0FBQyxHQUFHLEVBQUUsRUFBZSxDQUFDO0tBQy9DO1NBQU07UUFDTCxTQUFTLEdBQUcsaUJBQWlCLENBQUM7S0FDL0I7OztVQUVLLFdBQVcsR0FBRyxtQkFBQSxZQUFZLEVBQXlCO0lBQ3pELE9BQU87UUFDTCxXQUFXO1FBQ1gsU0FBUztRQUNULE1BQU07S0FDUCxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGlzT2JzZXJ2YWJsZSxcbiAgT2JzZXJ2YWJsZSxcbiAgb2YsXG4gIFJlcGxheVN1YmplY3QsXG4gIFN1YnNjcmlwdGlvbixcbiAgdGhyb3dFcnJvcixcbiAgY29tYmluZUxhdGVzdCxcbiAgU3ViamVjdCxcbiAgcXVldWVTY2hlZHVsZXIsXG4gIHNjaGVkdWxlZCxcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBjb25jYXRNYXAsXG4gIHRha2VVbnRpbCxcbiAgd2l0aExhdGVzdEZyb20sXG4gIG1hcCxcbiAgZGlzdGluY3RVbnRpbENoYW5nZWQsXG4gIHNoYXJlUmVwbGF5LFxuICB0YWtlLFxufSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBkZWJvdW5jZVN5bmMgfSBmcm9tICcuL2RlYm91bmNlLXN5bmMnO1xuaW1wb3J0IHtcbiAgSW5qZWN0YWJsZSxcbiAgT25EZXN0cm95LFxuICBPcHRpb25hbCxcbiAgSW5qZWN0aW9uVG9rZW4sXG4gIEluamVjdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogUmV0dXJuIHR5cGUgb2YgdGhlIGVmZmVjdCwgdGhhdCBiZWhhdmVzIGRpZmZlcmVudGx5IGJhc2VkIG9uIHdoZXRoZXIgdGhlXG4gKiBhcmd1bWVudCBpcyBwYXNzZWQgdG8gdGhlIGNhbGxiYWNrLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEVmZmVjdFJldHVybkZuPFQ+IHtcbiAgKCk6IHZvaWQ7XG4gICh0OiBUIHwgT2JzZXJ2YWJsZTxUPik6IFN1YnNjcmlwdGlvbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZWxlY3RDb25maWcge1xuICBkZWJvdW5jZT86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjb25zdCBpbml0aWFsU3RhdGVUb2tlbiA9IG5ldyBJbmplY3Rpb25Ub2tlbignQ29tcG9uZW50U3RvcmUgSW5pdFN0YXRlJyk7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBDb21wb25lbnRTdG9yZTxUIGV4dGVuZHMgb2JqZWN0PiBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIC8vIFNob3VsZCBiZSB1c2VkIG9ubHkgaW4gbmdPbkRlc3Ryb3kuXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveVN1YmplY3QkID0gbmV3IFJlcGxheVN1YmplY3Q8dm9pZD4oMSk7XG4gIC8vIEV4cG9zZWQgdG8gYW55IGV4dGVuZGluZyBTdG9yZSB0byBiZSB1c2VkIGZvciB0aGUgdGVhcmRvd25zLlxuICByZWFkb25seSBkZXN0cm95JCA9IHRoaXMuZGVzdHJveVN1YmplY3QkLmFzT2JzZXJ2YWJsZSgpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgc3RhdGVTdWJqZWN0JCA9IG5ldyBSZXBsYXlTdWJqZWN0PFQ+KDEpO1xuICBwcml2YXRlIGlzSW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBub3RJbml0aWFsaXplZEVycm9yTWVzc2FnZSA9XG4gICAgYCR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfSBoYXMgbm90IGJlZW4gaW5pdGlhbGl6ZWQgeWV0LiBgICtcbiAgICBgUGxlYXNlIG1ha2Ugc3VyZSBpdCBpcyBpbml0aWFsaXplZCBiZWZvcmUgdXBkYXRpbmcvZ2V0dGluZy5gO1xuICAvLyBOZWVkcyB0byBiZSBhZnRlciBkZXN0cm95JCBpcyBkZWNsYXJlZCBiZWNhdXNlIGl0J3MgdXNlZCBpbiBzZWxlY3QuXG4gIHJlYWRvbmx5IHN0YXRlJDogT2JzZXJ2YWJsZTxUPiA9IHRoaXMuc2VsZWN0KChzKSA9PiBzKTtcblxuICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBASW5qZWN0KGluaXRpYWxTdGF0ZVRva2VuKSBkZWZhdWx0U3RhdGU/OiBUKSB7XG4gICAgLy8gU3RhdGUgY2FuIGJlIGluaXRpYWxpemVkIGVpdGhlciB0aHJvdWdoIGNvbnN0cnVjdG9yIG9yIHNldFN0YXRlLlxuICAgIGlmIChkZWZhdWx0U3RhdGUpIHtcbiAgICAgIHRoaXMuaW5pdFN0YXRlKGRlZmF1bHRTdGF0ZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqIENvbXBsZXRlcyBhbGwgcmVsZXZhbnQgT2JzZXJ2YWJsZSBzdHJlYW1zLiAqL1xuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnN0YXRlU3ViamVjdCQuY29tcGxldGUoKTtcbiAgICB0aGlzLmRlc3Ryb3lTdWJqZWN0JC5uZXh0KCk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiB1cGRhdGVyLlxuICAgKlxuICAgKiBUaHJvd3MgYW4gZXJyb3IgaWYgdXBkYXRlciBpcyBjYWxsZWQgd2l0aCBzeW5jaHJvbm91cyB2YWx1ZXMgKGVpdGhlclxuICAgKiBpbXBlcmF0aXZlIHZhbHVlIG9yIE9ic2VydmFibGUgdGhhdCBpcyBzeW5jaHJvbm91cykgYmVmb3JlIENvbXBvbmVudFN0b3JlXG4gICAqIGlzIGluaXRpYWxpemVkLiBJZiBjYWxsZWQgd2l0aCBhc3luYyBPYnNlcnZhYmxlIGJlZm9yZSBpbml0aWFsaXphdGlvbiB0aGVuXG4gICAqIHN0YXRlIHdpbGwgbm90IGJlIHVwZGF0ZWQgYW5kIHN1YnNjcmlwdGlvbiB3b3VsZCBiZSBjbG9zZWQuXG4gICAqXG4gICAqIEBwYXJhbSB1cGRhdGVyRm4gQSBzdGF0aWMgdXBkYXRlciBmdW5jdGlvbiB0aGF0IHRha2VzIDIgcGFyYW1ldGVycyAodGhlXG4gICAqIGN1cnJlbnQgc3RhdGUgYW5kIGFuIGFyZ3VtZW50IG9iamVjdCkgYW5kIHJldHVybnMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlXG4gICAqIHN0YXRlLlxuICAgKiBAcmV0dXJuIEEgZnVuY3Rpb24gdGhhdCBhY2NlcHRzIG9uZSBhcmd1bWVudCB3aGljaCBpcyBmb3J3YXJkZWQgYXMgdGhlXG4gICAqICAgICBzZWNvbmQgYXJndW1lbnQgdG8gYHVwZGF0ZXJGbmAuIEV2ZXJ5dGltZSB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZFxuICAgKiAgICAgc3Vic2NyaWJlcnMgd2lsbCBiZSBub3RpZmllZCBvZiB0aGUgc3RhdGUgY2hhbmdlLlxuICAgKi9cbiAgdXBkYXRlcjxWPihcbiAgICB1cGRhdGVyRm46IChzdGF0ZTogVCwgdmFsdWU6IFYpID0+IFRcbiAgKTogdW5rbm93biBleHRlbmRzIFYgPyAoKSA9PiB2b2lkIDogKHQ6IFYgfCBPYnNlcnZhYmxlPFY+KSA9PiBTdWJzY3JpcHRpb24ge1xuICAgIHJldHVybiAoKG9ic2VydmFibGVPclZhbHVlPzogViB8IE9ic2VydmFibGU8Vj4pOiBTdWJzY3JpcHRpb24gPT4ge1xuICAgICAgbGV0IGluaXRpYWxpemF0aW9uRXJyb3I6IEVycm9yIHwgdW5kZWZpbmVkO1xuICAgICAgLy8gV2UgY2FuIHJlY2VpdmUgZWl0aGVyIHRoZSB2YWx1ZSBvciBhbiBvYnNlcnZhYmxlLiBJbiBjYXNlIGl0J3MgYVxuICAgICAgLy8gc2ltcGxlIHZhbHVlLCB3ZSdsbCB3cmFwIGl0IHdpdGggYG9mYCBvcGVyYXRvciB0byB0dXJuIGl0IGludG9cbiAgICAgIC8vIE9ic2VydmFibGUuXG4gICAgICBjb25zdCBvYnNlcnZhYmxlJCA9IGlzT2JzZXJ2YWJsZShvYnNlcnZhYmxlT3JWYWx1ZSlcbiAgICAgICAgPyBvYnNlcnZhYmxlT3JWYWx1ZVxuICAgICAgICA6IG9mKG9ic2VydmFibGVPclZhbHVlKTtcbiAgICAgIGNvbnN0IHN1YnNjcmlwdGlvbiA9IG9ic2VydmFibGUkXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIGNvbmNhdE1hcCgodmFsdWUpID0+XG4gICAgICAgICAgICB0aGlzLmlzSW5pdGlhbGl6ZWRcbiAgICAgICAgICAgICAgPyAvLyBQdXNoIHRoZSB2YWx1ZSBpbnRvIHF1ZXVlU2NoZWR1bGVyXG4gICAgICAgICAgICAgICAgc2NoZWR1bGVkKFt2YWx1ZV0sIHF1ZXVlU2NoZWR1bGVyKS5waXBlKFxuICAgICAgICAgICAgICAgICAgd2l0aExhdGVzdEZyb20odGhpcy5zdGF0ZVN1YmplY3QkKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgOiAvLyBJZiBzdGF0ZSB3YXMgbm90IGluaXRpYWxpemVkLCB3ZSdsbCB0aHJvdyBhbiBlcnJvci5cbiAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKG5ldyBFcnJvcih0aGlzLm5vdEluaXRpYWxpemVkRXJyb3JNZXNzYWdlKSlcbiAgICAgICAgICApLFxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICAgIG5leHQ6IChbdmFsdWUsIGN1cnJlbnRTdGF0ZV0pID0+IHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGVTdWJqZWN0JC5uZXh0KHVwZGF0ZXJGbihjdXJyZW50U3RhdGUsIHZhbHVlISkpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZXJyb3I6IChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgICAgICAgIGluaXRpYWxpemF0aW9uRXJyb3IgPSBlcnJvcjtcbiAgICAgICAgICAgIHRoaXMuc3RhdGVTdWJqZWN0JC5lcnJvcihlcnJvcik7XG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG5cbiAgICAgIGlmIChpbml0aWFsaXphdGlvbkVycm9yKSB7XG4gICAgICAgIC8vIHByZXR0aWVyLWlnbm9yZVxuICAgICAgICB0aHJvdyAvKiogQHR5cGUgeyFFcnJvcn0gKi8gKGluaXRpYWxpemF0aW9uRXJyb3IpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHN1YnNjcmlwdGlvbjtcbiAgICB9KSBhcyB1bmtub3duIGV4dGVuZHMgVlxuICAgICAgPyAoKSA9PiB2b2lkXG4gICAgICA6ICh0OiBWIHwgT2JzZXJ2YWJsZTxWPikgPT4gU3Vic2NyaXB0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemVzIHN0YXRlLiBJZiBpdCB3YXMgYWxyZWFkeSBpbml0aWFsaXplZCB0aGVuIGl0IHJlc2V0cyB0aGVcbiAgICogc3RhdGUuXG4gICAqL1xuICBwcml2YXRlIGluaXRTdGF0ZShzdGF0ZTogVCk6IHZvaWQge1xuICAgIHNjaGVkdWxlZChbc3RhdGVdLCBxdWV1ZVNjaGVkdWxlcikuc3Vic2NyaWJlKChzKSA9PiB7XG4gICAgICB0aGlzLmlzSW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgICAgdGhpcy5zdGF0ZVN1YmplY3QkLm5leHQocyk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgc3RhdGUgc3BlY2lmaWMgdmFsdWUuXG4gICAqIEBwYXJhbSBzdGF0ZU9yVXBkYXRlckZuIG9iamVjdCBvZiB0aGUgc2FtZSB0eXBlIGFzIHRoZSBzdGF0ZSBvciBhblxuICAgKiB1cGRhdGVyRm4sIHJldHVybmluZyBzdWNoIG9iamVjdC5cbiAgICovXG4gIHNldFN0YXRlKHN0YXRlT3JVcGRhdGVyRm46IFQgfCAoKHN0YXRlOiBUKSA9PiBUKSk6IHZvaWQge1xuICAgIGlmICh0eXBlb2Ygc3RhdGVPclVwZGF0ZXJGbiAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhpcy5pbml0U3RhdGUoc3RhdGVPclVwZGF0ZXJGbik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudXBkYXRlcihzdGF0ZU9yVXBkYXRlckZuIGFzIChzdGF0ZTogVCkgPT4gVCkoKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0KCk6IFQ7XG4gIHByb3RlY3RlZCBnZXQ8Uj4ocHJvamVjdG9yOiAoczogVCkgPT4gUik6IFI7XG4gIHByb3RlY3RlZCBnZXQ8Uj4ocHJvamVjdG9yPzogKHM6IFQpID0+IFIpOiBSIHwgVCB7XG4gICAgaWYgKCF0aGlzLmlzSW5pdGlhbGl6ZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcih0aGlzLm5vdEluaXRpYWxpemVkRXJyb3JNZXNzYWdlKTtcbiAgICB9XG4gICAgbGV0IHZhbHVlOiBSIHwgVDtcblxuICAgIHRoaXMuc3RhdGVTdWJqZWN0JC5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgoc3RhdGUpID0+IHtcbiAgICAgIHZhbHVlID0gcHJvamVjdG9yID8gcHJvamVjdG9yKHN0YXRlKSA6IHN0YXRlO1xuICAgIH0pO1xuICAgIHJldHVybiB2YWx1ZSE7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIHNlbGVjdG9yLlxuICAgKlxuICAgKiBUaGlzIHN1cHBvcnRzIGNvbWJpbmluZyB1cCB0byA0IHNlbGVjdG9ycy4gTW9yZSBjb3VsZCBiZSBhZGRlZCBhcyBuZWVkZWQuXG4gICAqXG4gICAqIEBwYXJhbSBwcm9qZWN0b3IgQSBwdXJlIHByb2plY3Rpb24gZnVuY3Rpb24gdGhhdCB0YWtlcyB0aGUgY3VycmVudCBzdGF0ZSBhbmRcbiAgICogICByZXR1cm5zIHNvbWUgbmV3IHNsaWNlL3Byb2plY3Rpb24gb2YgdGhhdCBzdGF0ZS5cbiAgICogQHBhcmFtIGNvbmZpZyBTZWxlY3RDb25maWcgdGhhdCBjaGFuZ2VzIHRoZSBiZWhhdm9pciBvZiBzZWxlY3RvciwgaW5jbHVkaW5nXG4gICAqICAgdGhlIGRlYm91bmNpbmcgb2YgdGhlIHZhbHVlcyB1bnRpbCB0aGUgc3RhdGUgaXMgc2V0dGxlZC5cbiAgICogQHJldHVybiBBbiBvYnNlcnZhYmxlIG9mIHRoZSBwcm9qZWN0b3IgcmVzdWx0cy5cbiAgICovXG4gIHNlbGVjdDxSPihwcm9qZWN0b3I6IChzOiBUKSA9PiBSLCBjb25maWc/OiBTZWxlY3RDb25maWcpOiBPYnNlcnZhYmxlPFI+O1xuICBzZWxlY3Q8UiwgUzE+KFxuICAgIHMxOiBPYnNlcnZhYmxlPFMxPixcbiAgICBwcm9qZWN0b3I6IChzMTogUzEpID0+IFIsXG4gICAgY29uZmlnPzogU2VsZWN0Q29uZmlnXG4gICk6IE9ic2VydmFibGU8Uj47XG4gIHNlbGVjdDxSLCBTMSwgUzI+KFxuICAgIHMxOiBPYnNlcnZhYmxlPFMxPixcbiAgICBzMjogT2JzZXJ2YWJsZTxTMj4sXG4gICAgcHJvamVjdG9yOiAoczE6IFMxLCBzMjogUzIpID0+IFIsXG4gICAgY29uZmlnPzogU2VsZWN0Q29uZmlnXG4gICk6IE9ic2VydmFibGU8Uj47XG4gIHNlbGVjdDxSLCBTMSwgUzIsIFMzPihcbiAgICBzMTogT2JzZXJ2YWJsZTxTMT4sXG4gICAgczI6IE9ic2VydmFibGU8UzI+LFxuICAgIHMzOiBPYnNlcnZhYmxlPFMzPixcbiAgICBwcm9qZWN0b3I6IChzMTogUzEsIHMyOiBTMiwgczM6IFMzKSA9PiBSLFxuICAgIGNvbmZpZz86IFNlbGVjdENvbmZpZ1xuICApOiBPYnNlcnZhYmxlPFI+O1xuICBzZWxlY3Q8UiwgUzEsIFMyLCBTMywgUzQ+KFxuICAgIHMxOiBPYnNlcnZhYmxlPFMxPixcbiAgICBzMjogT2JzZXJ2YWJsZTxTMj4sXG4gICAgczM6IE9ic2VydmFibGU8UzM+LFxuICAgIHM0OiBPYnNlcnZhYmxlPFM0PixcbiAgICBwcm9qZWN0b3I6IChzMTogUzEsIHMyOiBTMiwgczM6IFMzLCBzNDogUzQpID0+IFIsXG4gICAgY29uZmlnPzogU2VsZWN0Q29uZmlnXG4gICk6IE9ic2VydmFibGU8Uj47XG4gIHNlbGVjdDxcbiAgICBPIGV4dGVuZHMgQXJyYXk8T2JzZXJ2YWJsZTx1bmtub3duPiB8IFNlbGVjdENvbmZpZyB8IFByb2plY3RvckZuPixcbiAgICBSLFxuICAgIFByb2plY3RvckZuID0gKC4uLmE6IHVua25vd25bXSkgPT4gUlxuICA+KC4uLmFyZ3M6IE8pOiBPYnNlcnZhYmxlPFI+IHtcbiAgICBjb25zdCB7IG9ic2VydmFibGVzLCBwcm9qZWN0b3IsIGNvbmZpZyB9ID0gcHJvY2Vzc1NlbGVjdG9yQXJncyhhcmdzKTtcblxuICAgIGxldCBvYnNlcnZhYmxlJDogT2JzZXJ2YWJsZTx1bmtub3duPjtcbiAgICAvLyBJZiB0aGVyZSBhcmUgbm8gT2JzZXJ2YWJsZXMgdG8gY29tYmluZSwgdGhlbiB3ZSdsbCBqdXN0IG1hcCB0aGUgdmFsdWUuXG4gICAgaWYgKG9ic2VydmFibGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgb2JzZXJ2YWJsZSQgPSB0aGlzLnN0YXRlU3ViamVjdCQucGlwZShcbiAgICAgICAgY29uZmlnLmRlYm91bmNlID8gZGVib3VuY2VTeW5jKCkgOiAoc291cmNlJCkgPT4gc291cmNlJCxcbiAgICAgICAgbWFwKHByb2plY3RvcilcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIElmIHRoZXJlIGFyZSBtdWx0aXBsZSBhcmd1bWVudHMsIHRoZW4gd2UncmUgYWdncmVnYXRpbmcgc2VsZWN0b3JzLCBzbyB3ZSBuZWVkXG4gICAgICAvLyB0byB0YWtlIHRoZSBjb21iaW5lTGF0ZXN0IG9mIHRoZW0gYmVmb3JlIGNhbGxpbmcgdGhlIG1hcCBmdW5jdGlvbi5cbiAgICAgIG9ic2VydmFibGUkID0gY29tYmluZUxhdGVzdChvYnNlcnZhYmxlcykucGlwZShcbiAgICAgICAgY29uZmlnLmRlYm91bmNlID8gZGVib3VuY2VTeW5jKCkgOiAoc291cmNlJCkgPT4gc291cmNlJCxcbiAgICAgICAgbWFwKChwcm9qZWN0b3JBcmdzKSA9PiBwcm9qZWN0b3IoLi4ucHJvamVjdG9yQXJncykpXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gKG9ic2VydmFibGUkIGFzIE9ic2VydmFibGU8Uj4pLnBpcGUoXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgc2hhcmVSZXBsYXkoe1xuICAgICAgICByZWZDb3VudDogdHJ1ZSxcbiAgICAgICAgYnVmZmVyU2l6ZTogMSxcbiAgICAgIH0pLFxuICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIGVmZmVjdC5cbiAgICpcbiAgICogVGhpcyBlZmZlY3QgaXMgc3Vic2NyaWJlZCB0byBmb3IgdGhlIGxpZmUgb2YgdGhlIEBDb21wb25lbnQuXG4gICAqIEBwYXJhbSBnZW5lcmF0b3IgQSBmdW5jdGlvbiB0aGF0IHRha2VzIGFuIG9yaWdpbiBPYnNlcnZhYmxlIGlucHV0IGFuZFxuICAgKiAgICAgcmV0dXJucyBhbiBPYnNlcnZhYmxlLiBUaGUgT2JzZXJ2YWJsZSB0aGF0IGlzIHJldHVybmVkIHdpbGwgYmVcbiAgICogICAgIHN1YnNjcmliZWQgdG8gZm9yIHRoZSBsaWZlIG9mIHRoZSBjb21wb25lbnQuXG4gICAqIEByZXR1cm4gQSBmdW5jdGlvbiB0aGF0LCB3aGVuIGNhbGxlZCwgd2lsbCB0cmlnZ2VyIHRoZSBvcmlnaW4gT2JzZXJ2YWJsZS5cbiAgICovXG4gIGVmZmVjdDxWLCBSID0gdW5rbm93bj4oXG4gICAgZ2VuZXJhdG9yOiAob3JpZ2luJDogT2JzZXJ2YWJsZTxWPikgPT4gT2JzZXJ2YWJsZTxSPlxuICApOiBFZmZlY3RSZXR1cm5GbjxWPiB7XG4gICAgY29uc3Qgb3JpZ2luJCA9IG5ldyBTdWJqZWN0PFY+KCk7XG4gICAgZ2VuZXJhdG9yKG9yaWdpbiQpXG4gICAgICAvLyB0aWVkIHRvIHRoZSBsaWZlY3ljbGUg8J+RhyBvZiBDb21wb25lbnRTdG9yZVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgLnN1YnNjcmliZSgpO1xuXG4gICAgcmV0dXJuIChvYnNlcnZhYmxlT3JWYWx1ZT86IFYgfCBPYnNlcnZhYmxlPFY+KTogU3Vic2NyaXB0aW9uID0+IHtcbiAgICAgIGNvbnN0IG9ic2VydmFibGUkID0gaXNPYnNlcnZhYmxlKG9ic2VydmFibGVPclZhbHVlKVxuICAgICAgICA/IG9ic2VydmFibGVPclZhbHVlXG4gICAgICAgIDogb2Yob2JzZXJ2YWJsZU9yVmFsdWUpO1xuICAgICAgcmV0dXJuIG9ic2VydmFibGUkLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICAgIC8vIGFueSBuZXcg8J+RhyB2YWx1ZSBpcyBwdXNoZWQgaW50byBhIHN0cmVhbVxuICAgICAgICBvcmlnaW4kLm5leHQodmFsdWUpO1xuICAgICAgfSk7XG4gICAgfTtcbiAgfVxufVxuXG5mdW5jdGlvbiBwcm9jZXNzU2VsZWN0b3JBcmdzPFxuICBPIGV4dGVuZHMgQXJyYXk8T2JzZXJ2YWJsZTx1bmtub3duPiB8IFNlbGVjdENvbmZpZyB8IFByb2plY3RvckZuPixcbiAgUixcbiAgUHJvamVjdG9yRm4gPSAoLi4uYTogdW5rbm93bltdKSA9PiBSXG4+KFxuICBhcmdzOiBPXG4pOiB7XG4gIG9ic2VydmFibGVzOiBPYnNlcnZhYmxlPHVua25vd24+W107XG4gIHByb2plY3RvcjogUHJvamVjdG9yRm47XG4gIGNvbmZpZzogUmVxdWlyZWQ8U2VsZWN0Q29uZmlnPjtcbn0ge1xuICBjb25zdCBzZWxlY3RvckFyZ3MgPSBBcnJheS5mcm9tKGFyZ3MpO1xuICAvLyBBc3NpZ24gZGVmYXVsdCB2YWx1ZXMuXG4gIGxldCBjb25maWc6IFJlcXVpcmVkPFNlbGVjdENvbmZpZz4gPSB7IGRlYm91bmNlOiBmYWxzZSB9O1xuICBsZXQgcHJvamVjdG9yOiBQcm9qZWN0b3JGbjtcbiAgLy8gTGFzdCBhcmd1bWVudCBpcyBlaXRoZXIgcHJvamVjdG9yIG9yIGNvbmZpZ1xuICBjb25zdCBwcm9qZWN0b3JPckNvbmZpZyA9IHNlbGVjdG9yQXJncy5wb3AoKSBhcyBQcm9qZWN0b3JGbiB8IFNlbGVjdENvbmZpZztcblxuICBpZiAodHlwZW9mIHByb2plY3Rvck9yQ29uZmlnICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgLy8gV2UgZ290IHRoZSBjb25maWcgYXMgdGhlIGxhc3QgYXJndW1lbnQsIHJlcGxhY2UgYW55IGRlZmF1bHQgdmFsdWVzIHdpdGggaXQuXG4gICAgY29uZmlnID0geyAuLi5jb25maWcsIC4uLnByb2plY3Rvck9yQ29uZmlnIH07XG4gICAgLy8gUG9wIHRoZSBuZXh0IGFyZ3MsIHdoaWNoIHdvdWxkIGJlIHRoZSBwcm9qZWN0b3IgZm4uXG4gICAgcHJvamVjdG9yID0gc2VsZWN0b3JBcmdzLnBvcCgpIGFzIFByb2plY3RvckZuO1xuICB9IGVsc2Uge1xuICAgIHByb2plY3RvciA9IHByb2plY3Rvck9yQ29uZmlnO1xuICB9XG4gIC8vIFRoZSBPYnNlcnZhYmxlcyB0byBjb21iaW5lLCBpZiB0aGVyZSBhcmUgYW55LlxuICBjb25zdCBvYnNlcnZhYmxlcyA9IHNlbGVjdG9yQXJncyBhcyBPYnNlcnZhYmxlPHVua25vd24+W107XG4gIHJldHVybiB7XG4gICAgb2JzZXJ2YWJsZXMsXG4gICAgcHJvamVjdG9yLFxuICAgIGNvbmZpZyxcbiAgfTtcbn1cbiJdfQ==

@@ -1,1 +0,1 @@

{"moduleName":null,"summaries":[{"symbol":{"__symbol":0,"members":[]},"metadata":{"__symbolic":"interface"}},{"symbol":{"__symbol":1,"members":[]},"metadata":{"__symbolic":"new","expression":{"__symbol":2,"members":[]},"arguments":["ComponentStore InitState"]}},{"symbol":{"__symbol":3,"members":[]},"metadata":{"__symbolic":"class","arity":1,"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbol":4,"members":[]}},{"__symbolic":"call","expression":{"__symbol":5,"members":[]},"arguments":[{"__symbol":1,"members":[]}]}]],"parameters":[{"__symbolic":"error","message":"Could not resolve type","context":{"typeName":"T"},"fileName":"modules/component-store/src/component-store.ts"}]}],"ngOnDestroy":[{"__symbolic":"method"}],"updater":[{"__symbolic":"method"}],"initState":[{"__symbolic":"method"}],"setState":[{"__symbolic":"method"}],"select":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}],"effect":[{"__symbolic":"method"}]}},"type":{"summaryKind":3,"type":{"reference":{"__symbol":3,"members":[]},"diDeps":[{"isAttribute":false,"isHost":false,"isSelf":false,"isSkipSelf":false,"isOptional":true,"token":{"identifier":{"reference":{"__symbol":1,"members":[]}}}}],"lifecycleHooks":[1]}}}],"symbols":[{"__symbol":0,"name":"EffectReturnFn","filePath":"./component-store"},{"__symbol":1,"name":"initialStateToken","filePath":"./component-store"},{"__symbol":2,"name":"InjectionToken","filePath":"@angular/core"},{"__symbol":3,"name":"ComponentStore","filePath":"./component-store"},{"__symbol":4,"name":"Optional","filePath":"@angular/core"},{"__symbol":5,"name":"Inject","filePath":"@angular/core"}]}
{"moduleName":null,"summaries":[{"symbol":{"__symbol":0,"members":[]},"metadata":{"__symbolic":"interface"}},{"symbol":{"__symbol":1,"members":[]},"metadata":{"__symbolic":"interface"}},{"symbol":{"__symbol":2,"members":[]},"metadata":{"__symbolic":"new","expression":{"__symbol":3,"members":[]},"arguments":["ComponentStore InitState"]}},{"symbol":{"__symbol":4,"members":[]},"metadata":{"__symbolic":"class","arity":1,"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbol":5,"members":[]}},{"__symbolic":"call","expression":{"__symbol":6,"members":[]},"arguments":[{"__symbol":2,"members":[]}]}]],"parameters":[{"__symbolic":"error","message":"Could not resolve type","context":{"typeName":"T"},"fileName":"modules/component-store/src/component-store.ts"}]}],"ngOnDestroy":[{"__symbolic":"method"}],"updater":[{"__symbolic":"method"}],"initState":[{"__symbolic":"method"}],"setState":[{"__symbolic":"method"}],"get":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}],"select":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}],"effect":[{"__symbolic":"method"}]}},"type":{"summaryKind":3,"type":{"reference":{"__symbol":4,"members":[]},"diDeps":[{"isAttribute":false,"isHost":false,"isSelf":false,"isSkipSelf":false,"isOptional":true,"token":{"identifier":{"reference":{"__symbol":2,"members":[]}}}}],"lifecycleHooks":[1]}}}],"symbols":[{"__symbol":0,"name":"EffectReturnFn","filePath":"./component-store"},{"__symbol":1,"name":"SelectConfig","filePath":"./component-store"},{"__symbol":2,"name":"initialStateToken","filePath":"./component-store"},{"__symbol":3,"name":"InjectionToken","filePath":"@angular/core"},{"__symbol":4,"name":"ComponentStore","filePath":"./component-store"},{"__symbol":5,"name":"Optional","filePath":"@angular/core"},{"__symbol":6,"name":"Inject","filePath":"@angular/core"}]}

@@ -64,3 +64,5 @@ /**

*/
(error) => observer.error(error)),
(error) => {
observer.error(error);
}),
next: (/**

@@ -87,2 +89,2 @@ * @param {?} value

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVib3VuY2Utc3luYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL21vZHVsZXMvY29tcG9uZW50LXN0b3JlL3NyYy9kZWJvdW5jZS1zeW5jLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF3QkEsT0FBTyxFQUNMLGFBQWEsRUFFYixVQUFVLEVBQ1YsWUFBWSxHQUNiLE1BQU0sTUFBTSxDQUFDOzs7OztBQUVkLE1BQU0sVUFBVSxZQUFZO0lBQzFCOzs7O0lBQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUNoQixJQUFJLFVBQVU7Ozs7SUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFOztZQUN6QixrQkFBNEM7O1lBQzVDLFdBQTBCOztjQUN4QixnQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBRTtRQUMzQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQ2xCLE1BQU0sQ0FBQyxTQUFTLENBQUM7WUFDZixRQUFROzs7WUFBRSxHQUFHLEVBQUU7Z0JBQ2IsSUFBSSxrQkFBa0IsRUFBRTtvQkFDdEIsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztpQkFDNUI7Z0JBQ0QsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3RCLENBQUMsQ0FBQTtZQUNELEtBQUs7Ozs7WUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQTtZQUN2QyxJQUFJOzs7O1lBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDZCxXQUFXLEdBQUcsS0FBSyxDQUFDO2dCQUNwQixJQUFJLENBQUMsa0JBQWtCLEVBQUU7b0JBQ3ZCLGtCQUFrQixHQUFHLGFBQWEsQ0FBQyxRQUFROzs7b0JBQUMsR0FBRyxFQUFFO3dCQUMvQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO3dCQUMzQixrQkFBa0IsR0FBRyxTQUFTLENBQUM7b0JBQ2pDLENBQUMsRUFBQyxDQUFDO29CQUNILGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO2lCQUMxQztZQUNILENBQUMsQ0FBQTtTQUNGLENBQUMsQ0FDSCxDQUFDO1FBQ0YsT0FBTyxnQkFBZ0IsQ0FBQztJQUMxQixDQUFDLEVBQUMsRUFBQztBQUNQLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlIE1JVCBMaWNlbnNlXG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDE3LTIwMjAgTmljaG9sYXMgSmFtaWVzb24gYW5kIGNvbnRyaWJ1dG9yc1xuICpcbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbiAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbiAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcbiAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4gKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRVxuICogU09GVFdBUkUuXG4gKi9cblxuaW1wb3J0IHtcbiAgYXNhcFNjaGVkdWxlcixcbiAgTW9ub1R5cGVPcGVyYXRvckZ1bmN0aW9uLFxuICBPYnNlcnZhYmxlLFxuICBTdWJzY3JpcHRpb24sXG59IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgZnVuY3Rpb24gZGVib3VuY2VTeW5jPFQ+KCk6IE1vbm9UeXBlT3BlcmF0b3JGdW5jdGlvbjxUPiB7XG4gIHJldHVybiAoc291cmNlKSA9PlxuICAgIG5ldyBPYnNlcnZhYmxlPFQ+KChvYnNlcnZlcikgPT4ge1xuICAgICAgbGV0IGFjdGlvblN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgdW5kZWZpbmVkO1xuICAgICAgbGV0IGFjdGlvblZhbHVlOiBUIHwgdW5kZWZpbmVkO1xuICAgICAgY29uc3Qgcm9vdFN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcbiAgICAgIHJvb3RTdWJzY3JpcHRpb24uYWRkKFxuICAgICAgICBzb3VyY2Uuc3Vic2NyaWJlKHtcbiAgICAgICAgICBjb21wbGV0ZTogKCkgPT4ge1xuICAgICAgICAgICAgaWYgKGFjdGlvblN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgICBvYnNlcnZlci5uZXh0KGFjdGlvblZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBlcnJvcjogKGVycm9yKSA9PiBvYnNlcnZlci5lcnJvcihlcnJvciksXG4gICAgICAgICAgbmV4dDogKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICBhY3Rpb25WYWx1ZSA9IHZhbHVlO1xuICAgICAgICAgICAgaWYgKCFhY3Rpb25TdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgICAgYWN0aW9uU3Vic2NyaXB0aW9uID0gYXNhcFNjaGVkdWxlci5zY2hlZHVsZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dChhY3Rpb25WYWx1ZSk7XG4gICAgICAgICAgICAgICAgYWN0aW9uU3Vic2NyaXB0aW9uID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgcm9vdFN1YnNjcmlwdGlvbi5hZGQoYWN0aW9uU3Vic2NyaXB0aW9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgKTtcbiAgICAgIHJldHVybiByb290U3Vic2NyaXB0aW9uO1xuICAgIH0pO1xufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVib3VuY2Utc3luYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL21vZHVsZXMvY29tcG9uZW50LXN0b3JlL3NyYy9kZWJvdW5jZS1zeW5jLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF3QkEsT0FBTyxFQUNMLGFBQWEsRUFFYixVQUFVLEVBQ1YsWUFBWSxHQUNiLE1BQU0sTUFBTSxDQUFDOzs7OztBQUVkLE1BQU0sVUFBVSxZQUFZO0lBQzFCOzs7O0lBQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUNoQixJQUFJLFVBQVU7Ozs7SUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFOztZQUN6QixrQkFBNEM7O1lBQzVDLFdBQTBCOztjQUN4QixnQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBRTtRQUMzQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQ2xCLE1BQU0sQ0FBQyxTQUFTLENBQUM7WUFDZixRQUFROzs7WUFBRSxHQUFHLEVBQUU7Z0JBQ2IsSUFBSSxrQkFBa0IsRUFBRTtvQkFDdEIsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztpQkFDNUI7Z0JBQ0QsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3RCLENBQUMsQ0FBQTtZQUNELEtBQUs7Ozs7WUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUNmLFFBQVEsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDeEIsQ0FBQyxDQUFBO1lBQ0QsSUFBSTs7OztZQUFFLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ2QsV0FBVyxHQUFHLEtBQUssQ0FBQztnQkFDcEIsSUFBSSxDQUFDLGtCQUFrQixFQUFFO29CQUN2QixrQkFBa0IsR0FBRyxhQUFhLENBQUMsUUFBUTs7O29CQUFDLEdBQUcsRUFBRTt3QkFDL0MsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQzt3QkFDM0Isa0JBQWtCLEdBQUcsU0FBUyxDQUFDO29CQUNqQyxDQUFDLEVBQUMsQ0FBQztvQkFDSCxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUMsQ0FBQztpQkFDMUM7WUFDSCxDQUFDLENBQUE7U0FDRixDQUFDLENBQ0gsQ0FBQztRQUNGLE9BQU8sZ0JBQWdCLENBQUM7SUFDMUIsQ0FBQyxFQUFDLEVBQUM7QUFDUCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZSBNSVQgTGljZW5zZVxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxNy0yMDIwIE5pY2hvbGFzIEphbWllc29uIGFuZCBjb250cmlidXRvcnNcbiAqXG4gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4gKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4gKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4gKlxuICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsXG4gKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuICpcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbiAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4gKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEVcbiAqIFNPRlRXQVJFLlxuICovXG5cbmltcG9ydCB7XG4gIGFzYXBTY2hlZHVsZXIsXG4gIE1vbm9UeXBlT3BlcmF0b3JGdW5jdGlvbixcbiAgT2JzZXJ2YWJsZSxcbiAgU3Vic2NyaXB0aW9uLFxufSBmcm9tICdyeGpzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGRlYm91bmNlU3luYzxUPigpOiBNb25vVHlwZU9wZXJhdG9yRnVuY3Rpb248VD4ge1xuICByZXR1cm4gKHNvdXJjZSkgPT5cbiAgICBuZXcgT2JzZXJ2YWJsZTxUPigob2JzZXJ2ZXIpID0+IHtcbiAgICAgIGxldCBhY3Rpb25TdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IHVuZGVmaW5lZDtcbiAgICAgIGxldCBhY3Rpb25WYWx1ZTogVCB8IHVuZGVmaW5lZDtcbiAgICAgIGNvbnN0IHJvb3RTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gICAgICByb290U3Vic2NyaXB0aW9uLmFkZChcbiAgICAgICAgc291cmNlLnN1YnNjcmliZSh7XG4gICAgICAgICAgY29tcGxldGU6ICgpID0+IHtcbiAgICAgICAgICAgIGlmIChhY3Rpb25TdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dChhY3Rpb25WYWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xuICAgICAgICAgICAgb2JzZXJ2ZXIuZXJyb3IoZXJyb3IpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgbmV4dDogKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICBhY3Rpb25WYWx1ZSA9IHZhbHVlO1xuICAgICAgICAgICAgaWYgKCFhY3Rpb25TdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgICAgYWN0aW9uU3Vic2NyaXB0aW9uID0gYXNhcFNjaGVkdWxlci5zY2hlZHVsZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dChhY3Rpb25WYWx1ZSk7XG4gICAgICAgICAgICAgICAgYWN0aW9uU3Vic2NyaXB0aW9uID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgcm9vdFN1YnNjcmlwdGlvbi5hZGQoYWN0aW9uU3Vic2NyaXB0aW9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgKTtcbiAgICAgIHJldHVybiByb290U3Vic2NyaXB0aW9uO1xuICAgIH0pO1xufVxuIl19

@@ -1,1 +0,1 @@

{"moduleName":null,"summaries":[{"symbol":{"__symbol":0,"members":[]},"metadata":{"__symbol":1,"members":[]}},{"symbol":{"__symbol":2,"members":[]},"metadata":{"__symbol":3,"members":[]}},{"symbol":{"__symbol":4,"members":[]},"metadata":{"__symbol":5,"members":[]}}],"symbols":[{"__symbol":0,"name":"EffectReturnFn","filePath":"./index"},{"__symbol":1,"name":"EffectReturnFn","filePath":"./component-store"},{"__symbol":2,"name":"initialStateToken","filePath":"./index"},{"__symbol":3,"name":"initialStateToken","filePath":"./component-store"},{"__symbol":4,"name":"ComponentStore","filePath":"./index"},{"__symbol":5,"name":"ComponentStore","filePath":"./component-store"}]}
{"moduleName":null,"summaries":[{"symbol":{"__symbol":0,"members":[]},"metadata":{"__symbol":1,"members":[]}},{"symbol":{"__symbol":2,"members":[]},"metadata":{"__symbol":3,"members":[]}},{"symbol":{"__symbol":4,"members":[]},"metadata":{"__symbol":5,"members":[]}},{"symbol":{"__symbol":6,"members":[]},"metadata":{"__symbol":7,"members":[]}}],"symbols":[{"__symbol":0,"name":"EffectReturnFn","filePath":"./index"},{"__symbol":1,"name":"EffectReturnFn","filePath":"./component-store"},{"__symbol":2,"name":"SelectConfig","filePath":"./index"},{"__symbol":3,"name":"SelectConfig","filePath":"./component-store"},{"__symbol":4,"name":"initialStateToken","filePath":"./index"},{"__symbol":5,"name":"initialStateToken","filePath":"./component-store"},{"__symbol":6,"name":"ComponentStore","filePath":"./index"},{"__symbol":7,"name":"ComponentStore","filePath":"./component-store"}]}
import { Observable, Subscription, asapScheduler, ReplaySubject, isObservable, of, scheduled, queueScheduler, throwError, combineLatest, Subject } from 'rxjs';
import { concatMap, withLatestFrom, takeUntil, map, distinctUntilChanged, shareReplay } from 'rxjs/operators';
import { concatMap, withLatestFrom, takeUntil, take, map, distinctUntilChanged, shareReplay } from 'rxjs/operators';
import { InjectionToken, Injectable, Optional, Inject } from '@angular/core';

@@ -44,3 +44,5 @@

*/
(error) => observer.error(error)),
(error) => {
observer.error(error);
}),
next: (/**

@@ -80,2 +82,10 @@ * @param {?} value

function EffectReturnFn() { }
/**
* @record
*/
function SelectConfig() { }
if (false) {
/** @type {?|undefined} */
SelectConfig.prototype.debounce;
}
/** @type {?} */

@@ -97,2 +107,4 @@ const initialStateToken = new InjectionToken('ComponentStore InitState');

this.isInitialized = false;
this.notInitializedErrorMessage = `${this.constructor.name} has not been initialized yet. ` +
`Please make sure it is initialized before updating/getting.`;
// Needs to be after destroy$ is declared because it's used in select.

@@ -158,3 +170,3 @@ this.state$ = this.select((/**

: // If state was not initialized, we'll throw an error.
throwError(Error(`${this.constructor.name} has not been initialized`)))), takeUntil(this.destroy$))
throwError(new Error(this.notInitializedErrorMessage)))), takeUntil(this.destroy$))
.subscribe({

@@ -192,4 +204,10 @@ next: (/**

initState(state) {
this.isInitialized = true;
this.stateSubject$.next(state);
scheduled([state], queueScheduler).subscribe((/**
* @param {?} s
* @return {?}
*/
(s) => {
this.isInitialized = true;
this.stateSubject$.next(s);
}));
}

@@ -211,3 +229,24 @@ /**

/**
* @protected
* @template R
* @param {?=} projector
* @return {?}
*/
get(projector) {
if (!this.isInitialized) {
throw new Error(this.notInitializedErrorMessage);
}
/** @type {?} */
let value;
this.stateSubject$.pipe(take(1)).subscribe((/**
* @param {?} state
* @return {?}
*/
(state) => {
value = projector ? projector(state) : state;
}));
return (/** @type {?} */ (value));
}
/**
* @template O, R, ProjectorFn
* @param {...?} args

@@ -217,29 +256,30 @@ * @return {?}

select(...args) {
const { observables, projector, config } = processSelectorArgs(args);
/** @type {?} */
let observable$;
// project is always the last argument, so `pop` it from args.
/** @type {?} */
const projector = args.pop();
if (args.length === 0) {
// If projector was the only argument then we'll use map operator.
observable$ = this.stateSubject$.pipe(debounceSync(), map(projector));
// If there are no Observables to combine, then we'll just map the value.
if (observables.length === 0) {
observable$ = this.stateSubject$.pipe(config.debounce ? debounceSync() : (/**
* @param {?} source$
* @return {?}
*/
(source$) => source$), map(projector));
}
else {
// If there are multiple arguments, we're chaining selectors, so we need
// If there are multiple arguments, then we're aggregating selectors, so we need
// to take the combineLatest of them before calling the map function.
observable$ = combineLatest(args).pipe(
// The most performant way to combine Observables avoiding unnecessary
// emissions and projector calls.
debounceSync(), map((/**
* @param {?} args
observable$ = combineLatest(observables).pipe(config.debounce ? debounceSync() : (/**
* @param {?} source$
* @return {?}
*/
(args) => projector(...args))));
(source$) => source$), map((/**
* @param {?} projectorArgs
* @return {?}
*/
(projectorArgs) => projector(...projectorArgs))));
}
/** @type {?} */
const distinctSharedObservable$ = observable$.pipe(distinctUntilChanged(), shareReplay({
return ((/** @type {?} */ (observable$))).pipe(distinctUntilChanged(), shareReplay({
refCount: true,
bufferSize: 1,
}), takeUntil(this.destroy$));
return distinctSharedObservable$;
}

@@ -308,5 +348,44 @@ /**

ComponentStore.prototype.isInitialized;
/**
* @type {?}
* @private
*/
ComponentStore.prototype.notInitializedErrorMessage;
/** @type {?} */
ComponentStore.prototype.state$;
}
/**
* @template O, R, ProjectorFn
* @param {?} args
* @return {?}
*/
function processSelectorArgs(args) {
/** @type {?} */
const selectorArgs = Array.from(args);
// Assign default values.
/** @type {?} */
let config = { debounce: false };
/** @type {?} */
let projector;
// Last argument is either projector or config
/** @type {?} */
const projectorOrConfig = (/** @type {?} */ (selectorArgs.pop()));
if (typeof projectorOrConfig !== 'function') {
// We got the config as the last argument, replace any default values with it.
config = Object.assign(Object.assign({}, config), projectorOrConfig);
// Pop the next args, which would be the projector fn.
projector = (/** @type {?} */ (selectorArgs.pop()));
}
else {
projector = projectorOrConfig;
}
// The Observables to combine, if there are any.
/** @type {?} */
const observables = (/** @type {?} */ (selectorArgs));
return {
observables,
projector,
config,
};
}

@@ -313,0 +392,0 @@ /**

@@ -1,1 +0,1 @@

{"__symbolic":"module","version":4,"metadata":{"EffectReturnFn":{"__symbolic":"interface"},"initialStateToken":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":38,"character":37},"arguments":["ComponentStore InitState"]},"ComponentStore":{"__symbolic":"class","arity":1,"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":40,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":52,"character":15}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":52,"character":27},"arguments":[{"__symbolic":"reference","name":"initialStateToken"}]}]],"parameters":[{"__symbolic":"error","message":"Could not resolve type","line":52,"character":68,"context":{"typeName":"T"},"module":"./src/component-store"}]}],"ngOnDestroy":[{"__symbolic":"method"}],"updater":[{"__symbolic":"method"}],"initState":[{"__symbolic":"method"}],"setState":[{"__symbolic":"method"}],"select":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}],"effect":[{"__symbolic":"method"}]}}},"origins":{"EffectReturnFn":"./src/component-store","initialStateToken":"./src/component-store","ComponentStore":"./src/component-store"},"importAs":"@ngrx/component-store"}
{"__symbolic":"module","version":4,"metadata":{"EffectReturnFn":{"__symbolic":"interface"},"SelectConfig":{"__symbolic":"interface"},"initialStateToken":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":43,"character":37},"arguments":["ComponentStore InitState"]},"ComponentStore":{"__symbolic":"class","arity":1,"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":45,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":60,"character":15}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":60,"character":27},"arguments":[{"__symbolic":"reference","name":"initialStateToken"}]}]],"parameters":[{"__symbolic":"error","message":"Could not resolve type","line":60,"character":68,"context":{"typeName":"T"},"module":"./src/component-store"}]}],"ngOnDestroy":[{"__symbolic":"method"}],"updater":[{"__symbolic":"method"}],"initState":[{"__symbolic":"method"}],"setState":[{"__symbolic":"method"}],"get":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}],"select":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}],"effect":[{"__symbolic":"method"}]}}},"origins":{"EffectReturnFn":"./src/component-store","SelectConfig":"./src/component-store","initialStateToken":"./src/component-store","ComponentStore":"./src/component-store"},"importAs":"@ngrx/component-store"}
{
"name": "@ngrx/component-store",
"version": "10.0.0-beta.0",
"version": "10.0.0-beta.1",
"description": "Reactive store for component state",

@@ -29,2 +29,16 @@ "repository": {

"sideEffects": false,
"ng-update": {
"packageGroup": [
"@ngrx/store",
"@ngrx/effects",
"@ngrx/entity",
"@ngrx/router-store",
"@ngrx/data",
"@ngrx/schematics",
"@ngrx/store-devtools",
"@ngrx/component-store",
"@ngrx/component"
],
"migrations": "./migrations/migration.json"
},
"main": "bundles/ngrx-component-store.umd.js",

@@ -31,0 +45,0 @@ "module": "fesm2015/ngrx-component-store.js",

@@ -11,2 +11,5 @@ import { Observable, Subscription } from 'rxjs';

}
export interface SelectConfig {
debounce?: boolean;
}
export declare const initialStateToken: InjectionToken<unknown>;

@@ -18,2 +21,3 @@ export declare class ComponentStore<T extends object> implements OnDestroy {

private isInitialized;
private notInitializedErrorMessage;
readonly state$: Observable<T>;

@@ -50,16 +54,20 @@ constructor(defaultState?: T);

setState(stateOrUpdaterFn: T | ((state: T) => T)): void;
protected get(): T;
protected get<R>(projector: (s: T) => R): R;
/**
* Creates a selector.
*
* This supports chaining up to 4 selectors. More could be added as needed.
* This supports combining up to 4 selectors. More could be added as needed.
*
* @param projector A pure projection function that takes the current state and
* returns some new slice/projection of that state.
* @param config SelectConfig that changes the behavoir of selector, including
* the debouncing of the values until the state is settled.
* @return An observable of the projector results.
*/
select<R>(projector: (s: T) => R): Observable<R>;
select<R, S1>(s1: Observable<S1>, projector: (s1: S1) => R): Observable<R>;
select<R, S1, S2>(s1: Observable<S1>, s2: Observable<S2>, projector: (s1: S1, s2: S2) => R): Observable<R>;
select<R, S1, S2, S3>(s1: Observable<S1>, s2: Observable<S2>, s3: Observable<S3>, projector: (s1: S1, s2: S2, s3: S3) => R): Observable<R>;
select<R, S1, S2, S3, S4>(s1: Observable<S1>, s2: Observable<S2>, s3: Observable<S3>, s4: Observable<S4>, projector: (s1: S1, s2: S2, s3: S3, s4: S4) => R): Observable<R>;
select<R>(projector: (s: T) => R, config?: SelectConfig): Observable<R>;
select<R, S1>(s1: Observable<S1>, projector: (s1: S1) => R, config?: SelectConfig): Observable<R>;
select<R, S1, S2>(s1: Observable<S1>, s2: Observable<S2>, projector: (s1: S1, s2: S2) => R, config?: SelectConfig): Observable<R>;
select<R, S1, S2, S3>(s1: Observable<S1>, s2: Observable<S2>, s3: Observable<S3>, projector: (s1: S1, s2: S2, s3: S3) => R, config?: SelectConfig): Observable<R>;
select<R, S1, S2, S3, S4>(s1: Observable<S1>, s2: Observable<S2>, s3: Observable<S3>, s4: Observable<S4>, projector: (s1: S1, s2: S2, s3: S3, s4: S4) => R, config?: SelectConfig): Observable<R>;
/**

@@ -66,0 +74,0 @@ * Creates an effect.

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc