UNPKG

109 kBSource Map (JSON)View Raw
1{"version":3,"file":"ngrx-store.js","sources":["../../../../modules/store/src/globals.ts","../../../../modules/store/src/action_creator.ts","../../../../modules/store/src/actions_subject.ts","../../../../modules/store/src/tokens.ts","../../../../modules/store/src/utils.ts","../../../../modules/store/src/reducer_manager.ts","../../../../modules/store/src/scanned_actions_subject.ts","../../../../modules/store/src/state.ts","../../../../modules/store/src/store.ts","../../../../modules/store/src/helpers.ts","../../../../modules/store/src/meta-reducers/utils.ts","../../../../modules/store/src/flags.ts","../../../../modules/store/src/selector.ts","../../../../modules/store/src/feature_creator.ts","../../../../modules/store/src/meta-reducers/immutability_reducer.ts","../../../../modules/store/src/meta-reducers/serialization_reducer.ts","../../../../modules/store/src/meta-reducers/inNgZoneAssert_reducer.ts","../../../../modules/store/src/runtime_checks.ts","../../../../modules/store/src/store_module.ts","../../../../modules/store/src/reducer_creator.ts","../../../../modules/store/index.ts","../../../../modules/store/ngrx-store.ts"],"sourcesContent":["export const REGISTERED_ACTION_TYPES: { [actionType: string]: number } = {};\n\nexport function resetRegisteredActionTypes() {\n for (const key of Object.keys(REGISTERED_ACTION_TYPES)) {\n delete REGISTERED_ACTION_TYPES[key];\n }\n}\n","import {\n Creator,\n ActionCreator,\n TypedAction,\n FunctionWithParametersType,\n NotAllowedCheck,\n ActionCreatorProps,\n} from './models';\nimport { REGISTERED_ACTION_TYPES } from './globals';\n\n// Action creators taken from ts-action library and modified a bit to better\n// fit current NgRx usage. Thank you Nicholas Jamieson (@cartant).\n\nexport function createAction<T extends string>(\n type: T\n): ActionCreator<T, () => TypedAction<T>>;\nexport function createAction<T extends string, P extends object>(\n type: T,\n config: ActionCreatorProps<P> & NotAllowedCheck<P>\n): ActionCreator<T, (props: P & NotAllowedCheck<P>) => P & TypedAction<T>>;\nexport function createAction<\n T extends string,\n P extends any[],\n R extends object\n>(\n type: T,\n creator: Creator<P, R & NotAllowedCheck<R>>\n): FunctionWithParametersType<P, R & TypedAction<T>> & TypedAction<T>;\n/**\n * @description\n * Creates a configured `Creator` function that, when called, returns an object in the shape of the `Action` interface.\n *\n * Action creators reduce the explicitness of class-based action creators.\n *\n * @param type Describes the action that will be dispatched\n * @param config Additional metadata needed for the handling of the action. See {@link createAction#usage-notes Usage Notes}.\n *\n * @usageNotes\n *\n * **Declaring an action creator**\n *\n * Without additional metadata:\n * ```ts\n * export const increment = createAction('[Counter] Increment');\n * ```\n * With additional metadata:\n * ```ts\n * export const loginSuccess = createAction(\n * '[Auth/API] Login Success',\n * props<{ user: User }>()\n * );\n * ```\n * With a function:\n * ```ts\n * export const loginSuccess = createAction(\n * '[Auth/API] Login Success',\n * (response: Response) => response.user\n * );\n * ```\n *\n * **Dispatching an action**\n *\n * Without additional metadata:\n * ```ts\n * store.dispatch(increment());\n * ```\n * With additional metadata:\n * ```ts\n * store.dispatch(loginSuccess({ user: newUser }));\n * ```\n *\n * **Referencing an action in a reducer**\n *\n * Using a switch statement:\n * ```ts\n * switch (action.type) {\n * // ...\n * case AuthApiActions.loginSuccess.type: {\n * return {\n * ...state,\n * user: action.user\n * };\n * }\n * }\n * ```\n * Using a reducer creator:\n * ```ts\n * on(AuthApiActions.loginSuccess, (state, { user }) => ({ ...state, user }))\n * ```\n *\n * **Referencing an action in an effect**\n * ```ts\n * effectName$ = createEffect(\n * () => this.actions$.pipe(\n * ofType(AuthApiActions.loginSuccess),\n * // ...\n * )\n * );\n * ```\n */\nexport function createAction<T extends string, C extends Creator>(\n type: T,\n config?: { _as: 'props' } | C\n): ActionCreator<T> {\n REGISTERED_ACTION_TYPES[type] = (REGISTERED_ACTION_TYPES[type] || 0) + 1;\n\n if (typeof config === 'function') {\n return defineType(type, (...args: any[]) => ({\n ...config(...args),\n type,\n }));\n }\n const as = config ? config._as : 'empty';\n switch (as) {\n case 'empty':\n return defineType(type, () => ({ type }));\n case 'props':\n return defineType(type, (props: object) => ({\n ...props,\n type,\n }));\n default:\n throw new Error('Unexpected config.');\n }\n}\n\nexport function props<P extends object>(): ActionCreatorProps<P> {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion, @typescript-eslint/naming-convention\n return { _as: 'props', _p: undefined! };\n}\n\nexport function union<\n C extends { [key: string]: ActionCreator<string, Creator> }\n>(creators: C): ReturnType<C[keyof C]> {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return undefined!;\n}\n\nfunction defineType<T extends string>(\n type: T,\n creator: Creator\n): ActionCreator<T> {\n return Object.defineProperty(creator, 'type', {\n value: type,\n writable: false,\n });\n}\n","import { Injectable, OnDestroy, Provider } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\nimport { Action } from './models';\n\nexport const INIT = '@ngrx/store/init' as const;\n\n@Injectable()\nexport class ActionsSubject\n extends BehaviorSubject<Action>\n implements OnDestroy {\n constructor() {\n super({ type: INIT });\n }\n\n next(action: Action): void {\n if (typeof action === 'function') {\n throw new TypeError(`\n Dispatch expected an object, instead it received a function.\n If you're using the createAction function, make sure to invoke the function\n before dispatching the action. For example, someAction should be someAction().`);\n } else if (typeof action === 'undefined') {\n throw new TypeError(`Actions must be objects`);\n } else if (typeof action.type === 'undefined') {\n throw new TypeError(`Actions must have a type property`);\n }\n super.next(action);\n }\n\n complete() {\n /* noop */\n }\n\n ngOnDestroy() {\n super.complete();\n }\n}\n\nexport const ACTIONS_SUBJECT_PROVIDERS: Provider[] = [ActionsSubject];\n","import { InjectionToken } from '@angular/core';\nimport { RuntimeChecks, MetaReducer } from './models';\n\nexport const _ROOT_STORE_GUARD = new InjectionToken<void>(\n '@ngrx/store Internal Root Guard'\n);\nexport const _INITIAL_STATE = new InjectionToken(\n '@ngrx/store Internal Initial State'\n);\nexport const INITIAL_STATE = new InjectionToken('@ngrx/store Initial State');\nexport const REDUCER_FACTORY = new InjectionToken(\n '@ngrx/store Reducer Factory'\n);\nexport const _REDUCER_FACTORY = new InjectionToken(\n '@ngrx/store Internal Reducer Factory Provider'\n);\nexport const INITIAL_REDUCERS = new InjectionToken(\n '@ngrx/store Initial Reducers'\n);\nexport const _INITIAL_REDUCERS = new InjectionToken(\n '@ngrx/store Internal Initial Reducers'\n);\nexport const STORE_FEATURES = new InjectionToken('@ngrx/store Store Features');\nexport const _STORE_REDUCERS = new InjectionToken(\n '@ngrx/store Internal Store Reducers'\n);\nexport const _FEATURE_REDUCERS = new InjectionToken(\n '@ngrx/store Internal Feature Reducers'\n);\n\nexport const _FEATURE_CONFIGS = new InjectionToken(\n '@ngrx/store Internal Feature Configs'\n);\n\nexport const _STORE_FEATURES = new InjectionToken(\n '@ngrx/store Internal Store Features'\n);\n\nexport const _FEATURE_REDUCERS_TOKEN = new InjectionToken(\n '@ngrx/store Internal Feature Reducers Token'\n);\nexport const FEATURE_REDUCERS = new InjectionToken(\n '@ngrx/store Feature Reducers'\n);\n\n/**\n * User-defined meta reducers from StoreModule.forRoot()\n */\nexport const USER_PROVIDED_META_REDUCERS = new InjectionToken<MetaReducer[]>(\n '@ngrx/store User Provided Meta Reducers'\n);\n\n/**\n * Meta reducers defined either internally by @ngrx/store or by library authors\n */\nexport const META_REDUCERS = new InjectionToken<MetaReducer[]>(\n '@ngrx/store Meta Reducers'\n);\n\n/**\n * Concats the user provided meta reducers and the meta reducers provided on the multi\n * injection token\n */\nexport const _RESOLVED_META_REDUCERS = new InjectionToken<MetaReducer>(\n '@ngrx/store Internal Resolved Meta Reducers'\n);\n\n/**\n * Runtime checks defined by the user via an InjectionToken\n * Defaults to `_USER_RUNTIME_CHECKS`\n */\nexport const USER_RUNTIME_CHECKS = new InjectionToken<RuntimeChecks>(\n '@ngrx/store User Runtime Checks Config'\n);\n\n/**\n * Runtime checks defined by the user via forRoot()\n */\nexport const _USER_RUNTIME_CHECKS = new InjectionToken<RuntimeChecks>(\n '@ngrx/store Internal User Runtime Checks Config'\n);\n\n/**\n * Runtime checks currently in use\n */\nexport const ACTIVE_RUNTIME_CHECKS = new InjectionToken<RuntimeChecks>(\n '@ngrx/store Internal Runtime Checks'\n);\n\nexport const _ACTION_TYPE_UNIQUENESS_CHECK = new InjectionToken<void>(\n '@ngrx/store Check if Action types are unique'\n);\n","import {\n Action,\n ActionReducer,\n ActionReducerFactory,\n ActionReducerMap,\n MetaReducer,\n InitialState,\n} from './models';\n\nexport function combineReducers<T, V extends Action = Action>(\n reducers: ActionReducerMap<T, V>,\n initialState?: Partial<T>\n): ActionReducer<T, V>;\n/**\n * @description\n * Combines reducers for individual features into a single reducer.\n *\n * You can use this function to delegate handling of state transitions to multiple reducers, each acting on their\n * own sub-state within the root state.\n *\n * @param reducers An object mapping keys of the root state to their corresponding feature reducer.\n * @param initialState Provides a state value if the current state is `undefined`, as it is initially.\n * @returns A reducer function.\n *\n * @usageNotes\n *\n * **Example combining two feature reducers into one \"root\" reducer**\n *\n * ```ts\n * export const reducer = combineReducers({\n * featureA: featureAReducer,\n * featureB: featureBReducer\n * });\n * ```\n *\n * You can also override the initial states of the sub-features:\n * ```ts\n * export const reducer = combineReducers({\n * featureA: featureAReducer,\n * featureB: featureBReducer\n * }, {\n * featureA: { counterA: 13 },\n * featureB: { counterB: 37 }\n * });\n * ```\n */\nexport function combineReducers(\n reducers: any,\n initialState: any = {}\n): ActionReducer<any, Action> {\n const reducerKeys = Object.keys(reducers);\n const finalReducers: any = {};\n\n for (let i = 0; i < reducerKeys.length; i++) {\n const key = reducerKeys[i];\n if (typeof reducers[key] === 'function') {\n finalReducers[key] = reducers[key];\n }\n }\n\n const finalReducerKeys = Object.keys(finalReducers);\n\n return function combination(state, action) {\n state = state === undefined ? initialState : state;\n let hasChanged = false;\n const nextState: any = {};\n for (let i = 0; i < finalReducerKeys.length; i++) {\n const key = finalReducerKeys[i];\n const reducer: any = finalReducers[key];\n const previousStateForKey = state[key];\n const nextStateForKey = reducer(previousStateForKey, action);\n\n nextState[key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n return hasChanged ? nextState : state;\n };\n}\n\nexport function omit<T extends { [key: string]: any }>(\n object: T,\n keyToRemove: keyof T\n): Partial<T> {\n return Object.keys(object)\n .filter((key) => key !== keyToRemove)\n .reduce((result, key) => Object.assign(result, { [key]: object[key] }), {});\n}\n\nexport function compose<A>(): (i: A) => A;\nexport function compose<A, B>(b: (i: A) => B): (i: A) => B;\nexport function compose<A, B, C>(c: (i: B) => C, b: (i: A) => B): (i: A) => C;\nexport function compose<A, B, C, D>(\n d: (i: C) => D,\n c: (i: B) => C,\n b: (i: A) => B\n): (i: A) => D;\nexport function compose<A, B, C, D, E>(\n e: (i: D) => E,\n d: (i: C) => D,\n c: (i: B) => C,\n b: (i: A) => B\n): (i: A) => E;\nexport function compose<A, B, C, D, E, F>(\n f: (i: E) => F,\n e: (i: D) => E,\n d: (i: C) => D,\n c: (i: B) => C,\n b: (i: A) => B\n): (i: A) => F;\nexport function compose<A = any, F = any>(...functions: any[]): (i: A) => F;\nexport function compose(...functions: any[]) {\n return function (arg: any) {\n if (functions.length === 0) {\n return arg;\n }\n\n const last = functions[functions.length - 1];\n const rest = functions.slice(0, -1);\n\n return rest.reduceRight((composed, fn) => fn(composed), last(arg));\n };\n}\n\nexport function createReducerFactory<T, V extends Action = Action>(\n reducerFactory: ActionReducerFactory<T, V>,\n metaReducers?: MetaReducer<T, V>[]\n): ActionReducerFactory<T, V> {\n if (Array.isArray(metaReducers) && metaReducers.length > 0) {\n (reducerFactory as any) = compose.apply(null, [\n ...metaReducers,\n reducerFactory,\n ]);\n }\n\n return (reducers: ActionReducerMap<T, V>, initialState?: InitialState<T>) => {\n const reducer = reducerFactory(reducers);\n return (state: T | undefined, action: V) => {\n state = state === undefined ? (initialState as T) : state;\n return reducer(state, action);\n };\n };\n}\n\nexport function createFeatureReducerFactory<T, V extends Action = Action>(\n metaReducers?: MetaReducer<T, V>[]\n): (reducer: ActionReducer<T, V>, initialState?: T) => ActionReducer<T, V> {\n const reducerFactory =\n Array.isArray(metaReducers) && metaReducers.length > 0\n ? compose<ActionReducer<T, V>>(...metaReducers)\n : (r: ActionReducer<T, V>) => r;\n\n return (reducer: ActionReducer<T, V>, initialState?: T) => {\n reducer = reducerFactory(reducer);\n\n return (state: T | undefined, action: V) => {\n state = state === undefined ? initialState : state;\n return reducer(state, action);\n };\n };\n}\n","import { Inject, Injectable, OnDestroy, Provider } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { ActionsSubject } from './actions_subject';\nimport {\n Action,\n ActionReducer,\n ActionReducerFactory,\n ActionReducerMap,\n StoreFeature,\n} from './models';\nimport { INITIAL_REDUCERS, INITIAL_STATE, REDUCER_FACTORY } from './tokens';\nimport {\n createFeatureReducerFactory,\n createReducerFactory,\n omit,\n} from './utils';\n\nexport abstract class ReducerObservable extends Observable<\n ActionReducer<any, any>\n> {}\nexport abstract class ReducerManagerDispatcher extends ActionsSubject {}\nexport const UPDATE = '@ngrx/store/update-reducers' as const;\n\n@Injectable()\nexport class ReducerManager\n extends BehaviorSubject<ActionReducer<any, any>>\n implements OnDestroy {\n get currentReducers(): ActionReducerMap<any, any> {\n return this.reducers;\n }\n\n constructor(\n private dispatcher: ReducerManagerDispatcher,\n @Inject(INITIAL_STATE) private initialState: any,\n @Inject(INITIAL_REDUCERS) private reducers: ActionReducerMap<any, any>,\n @Inject(REDUCER_FACTORY)\n private reducerFactory: ActionReducerFactory<any, any>\n ) {\n super(reducerFactory(reducers, initialState));\n }\n\n addFeature(feature: StoreFeature<any, any>) {\n this.addFeatures([feature]);\n }\n\n addFeatures(features: StoreFeature<any, any>[]) {\n const reducers = features.reduce(\n (\n reducerDict,\n { reducers, reducerFactory, metaReducers, initialState, key }\n ) => {\n const reducer =\n typeof reducers === 'function'\n ? createFeatureReducerFactory(metaReducers)(reducers, initialState)\n : createReducerFactory(reducerFactory, metaReducers)(\n reducers,\n initialState\n );\n\n reducerDict[key] = reducer;\n return reducerDict;\n },\n {} as { [key: string]: ActionReducer<any, any> }\n );\n\n this.addReducers(reducers);\n }\n\n removeFeature(feature: StoreFeature<any, any>) {\n this.removeFeatures([feature]);\n }\n\n removeFeatures(features: StoreFeature<any, any>[]) {\n this.removeReducers(features.map((p) => p.key));\n }\n\n addReducer(key: string, reducer: ActionReducer<any, any>) {\n this.addReducers({ [key]: reducer });\n }\n\n addReducers(reducers: { [key: string]: ActionReducer<any, any> }) {\n this.reducers = { ...this.reducers, ...reducers };\n this.updateReducers(Object.keys(reducers));\n }\n\n removeReducer(featureKey: string) {\n this.removeReducers([featureKey]);\n }\n\n removeReducers(featureKeys: string[]) {\n featureKeys.forEach((key) => {\n this.reducers = omit(this.reducers, key) /*TODO(#823)*/ as any;\n });\n this.updateReducers(featureKeys);\n }\n\n private updateReducers(featureKeys: string[]) {\n this.next(this.reducerFactory(this.reducers, this.initialState));\n this.dispatcher.next(<Action>{\n type: UPDATE,\n features: featureKeys,\n });\n }\n\n ngOnDestroy() {\n this.complete();\n }\n}\n\nexport const REDUCER_MANAGER_PROVIDERS: Provider[] = [\n ReducerManager,\n { provide: ReducerObservable, useExisting: ReducerManager },\n { provide: ReducerManagerDispatcher, useExisting: ActionsSubject },\n];\n","import { Injectable, OnDestroy, Provider } from '@angular/core';\nimport { Subject } from 'rxjs';\n\nimport { Action } from './models';\n\n@Injectable()\nexport class ScannedActionsSubject extends Subject<Action>\n implements OnDestroy {\n ngOnDestroy() {\n this.complete();\n }\n}\n\nexport const SCANNED_ACTIONS_SUBJECT_PROVIDERS: Provider[] = [\n ScannedActionsSubject,\n];\n","import { Inject, Injectable, OnDestroy, Provider } from '@angular/core';\nimport {\n BehaviorSubject,\n Observable,\n queueScheduler,\n Subscription,\n} from 'rxjs';\nimport { observeOn, scan, withLatestFrom } from 'rxjs/operators';\n\nimport { ActionsSubject, INIT } from './actions_subject';\nimport { Action, ActionReducer } from './models';\nimport { ReducerObservable } from './reducer_manager';\nimport { ScannedActionsSubject } from './scanned_actions_subject';\nimport { INITIAL_STATE } from './tokens';\n\nexport abstract class StateObservable extends Observable<any> {}\n\n@Injectable()\nexport class State<T> extends BehaviorSubject<any> implements OnDestroy {\n static readonly INIT = INIT;\n\n private stateSubscription: Subscription;\n\n constructor(\n actions$: ActionsSubject,\n reducer$: ReducerObservable,\n scannedActions: ScannedActionsSubject,\n @Inject(INITIAL_STATE) initialState: any\n ) {\n super(initialState);\n\n const actionsOnQueue$: Observable<Action> = actions$.pipe(\n observeOn(queueScheduler)\n );\n const withLatestReducer$: Observable<\n [Action, ActionReducer<any, Action>]\n > = actionsOnQueue$.pipe(withLatestFrom(reducer$));\n\n const seed: StateActionPair<T> = { state: initialState };\n const stateAndAction$: Observable<{\n state: any;\n action?: Action;\n }> = withLatestReducer$.pipe(\n scan<[Action, ActionReducer<T, Action>], StateActionPair<T>>(\n reduceState,\n seed\n )\n );\n\n this.stateSubscription = stateAndAction$.subscribe(({ state, action }) => {\n this.next(state);\n scannedActions.next(action);\n });\n }\n\n ngOnDestroy() {\n this.stateSubscription.unsubscribe();\n this.complete();\n }\n}\n\nexport type StateActionPair<T, V extends Action = Action> = {\n state: T | undefined;\n action?: V;\n};\nexport function reduceState<T, V extends Action = Action>(\n stateActionPair: StateActionPair<T, V> = { state: undefined },\n [action, reducer]: [V, ActionReducer<T, V>]\n): StateActionPair<T, V> {\n const { state } = stateActionPair;\n return { state: reducer(state, action), action };\n}\n\nexport const STATE_PROVIDERS: Provider[] = [\n State,\n { provide: StateObservable, useExisting: State },\n];\n","/* eslint-disable @typescript-eslint/naming-convention */\n// disabled because we have lowercase generics for `select`\nimport { Injectable, Provider } from '@angular/core';\nimport { Observable, Observer, Operator } from 'rxjs';\nimport { distinctUntilChanged, map, pluck } from 'rxjs/operators';\n\nimport { ActionsSubject } from './actions_subject';\nimport { Action, ActionReducer, FunctionIsNotAllowed } from './models';\nimport { ReducerManager } from './reducer_manager';\nimport { StateObservable } from './state';\n\n@Injectable()\nexport class Store<T = object>\n extends Observable<T>\n implements Observer<Action> {\n constructor(\n state$: StateObservable,\n private actionsObserver: ActionsSubject,\n private reducerManager: ReducerManager\n ) {\n super();\n\n this.source = state$;\n }\n\n select<K>(mapFn: (state: T) => K): Observable<K>;\n /**\n * @deprecated Selectors with props are deprecated, for more info see {@link https://github.com/ngrx/platform/issues/2980 Github Issue}\n */\n select<K, Props = any>(\n mapFn: (state: T, props: Props) => K,\n props: Props\n ): Observable<K>;\n select<a extends keyof T>(key: a): Observable<T[a]>;\n select<a extends keyof T, b extends keyof T[a]>(\n key1: a,\n key2: b\n ): Observable<T[a][b]>;\n select<a extends keyof T, b extends keyof T[a], c extends keyof T[a][b]>(\n key1: a,\n key2: b,\n key3: c\n ): Observable<T[a][b][c]>;\n select<\n a extends keyof T,\n b extends keyof T[a],\n c extends keyof T[a][b],\n d extends keyof T[a][b][c]\n >(key1: a, key2: b, key3: c, key4: d): Observable<T[a][b][c][d]>;\n select<\n a extends keyof T,\n b extends keyof T[a],\n c extends keyof T[a][b],\n d extends keyof T[a][b][c],\n e extends keyof T[a][b][c][d]\n >(key1: a, key2: b, key3: c, key4: d, key5: e): Observable<T[a][b][c][d][e]>;\n select<\n a extends keyof T,\n b extends keyof T[a],\n c extends keyof T[a][b],\n d extends keyof T[a][b][c],\n e extends keyof T[a][b][c][d],\n f extends keyof T[a][b][c][d][e]\n >(\n key1: a,\n key2: b,\n key3: c,\n key4: d,\n key5: e,\n key6: f\n ): Observable<T[a][b][c][d][e][f]>;\n select<\n a extends keyof T,\n b extends keyof T[a],\n c extends keyof T[a][b],\n d extends keyof T[a][b][c],\n e extends keyof T[a][b][c][d],\n f extends keyof T[a][b][c][d][e],\n K = any\n >(\n key1: a,\n key2: b,\n key3: c,\n key4: d,\n key5: e,\n key6: f,\n ...paths: string[]\n ): Observable<K>;\n select<Props = any, K = any>(\n pathOrMapFn: ((state: T, props?: Props) => K) | string,\n ...paths: string[]\n ): Observable<any> {\n return (select as any).call(null, pathOrMapFn, ...paths)(this);\n }\n\n lift<R>(operator: Operator<T, R>): Store<R> {\n const store = new Store<R>(this, this.actionsObserver, this.reducerManager);\n store.operator = operator;\n\n return store;\n }\n\n dispatch<V extends Action = Action>(\n action: V &\n FunctionIsNotAllowed<\n V,\n 'Functions are not allowed to be dispatched. Did you forget to call the action creator function?'\n >\n ) {\n this.actionsObserver.next(action);\n }\n\n next(action: Action) {\n this.actionsObserver.next(action);\n }\n\n error(err: any) {\n this.actionsObserver.error(err);\n }\n\n complete() {\n this.actionsObserver.complete();\n }\n\n addReducer<State, Actions extends Action = Action>(\n key: string,\n reducer: ActionReducer<State, Actions>\n ) {\n this.reducerManager.addReducer(key, reducer);\n }\n\n removeReducer<Key extends Extract<keyof T, string>>(key: Key) {\n this.reducerManager.removeReducer(key);\n }\n}\n\nexport const STORE_PROVIDERS: Provider[] = [Store];\n\nexport function select<T, K>(\n mapFn: (state: T) => K\n): (source$: Observable<T>) => Observable<K>;\n/**\n * @deprecated Selectors with props are deprecated, for more info see {@link https://github.com/ngrx/platform/issues/2980 Github Issue}\n */\nexport function select<T, Props, K>(\n mapFn: (state: T, props: Props) => K,\n props: Props\n): (source$: Observable<T>) => Observable<K>;\nexport function select<T, a extends keyof T>(\n key: a\n): (source$: Observable<T>) => Observable<T[a]>;\nexport function select<T, a extends keyof T, b extends keyof T[a]>(\n key1: a,\n key2: b\n): (source$: Observable<T>) => Observable<T[a][b]>;\nexport function select<\n T,\n a extends keyof T,\n b extends keyof T[a],\n c extends keyof T[a][b]\n>(\n key1: a,\n key2: b,\n key3: c\n): (source$: Observable<T>) => Observable<T[a][b][c]>;\nexport function select<\n T,\n a extends keyof T,\n b extends keyof T[a],\n c extends keyof T[a][b],\n d extends keyof T[a][b][c]\n>(\n key1: a,\n key2: b,\n key3: c,\n key4: d\n): (source$: Observable<T>) => Observable<T[a][b][c][d]>;\nexport function select<\n T,\n a extends keyof T,\n b extends keyof T[a],\n c extends keyof T[a][b],\n d extends keyof T[a][b][c],\n e extends keyof T[a][b][c][d]\n>(\n key1: a,\n key2: b,\n key3: c,\n key4: d,\n key5: e\n): (source$: Observable<T>) => Observable<T[a][b][c][d][e]>;\nexport function select<\n T,\n a extends keyof T,\n b extends keyof T[a],\n c extends keyof T[a][b],\n d extends keyof T[a][b][c],\n e extends keyof T[a][b][c][d],\n f extends keyof T[a][b][c][d][e]\n>(\n key1: a,\n key2: b,\n key3: c,\n key4: d,\n key5: e,\n key6: f\n): (source$: Observable<T>) => Observable<T[a][b][c][d][e][f]>;\nexport function select<\n T,\n a extends keyof T,\n b extends keyof T[a],\n c extends keyof T[a][b],\n d extends keyof T[a][b][c],\n e extends keyof T[a][b][c][d],\n f extends keyof T[a][b][c][d][e],\n K = any\n>(\n key1: a,\n key2: b,\n key3: c,\n key4: d,\n key5: e,\n key6: f,\n ...paths: string[]\n): (source$: Observable<T>) => Observable<K>;\nexport function select<T, Props, K>(\n pathOrMapFn: ((state: T, props?: Props) => any) | string,\n propsOrPath?: Props | string,\n ...paths: string[]\n) {\n return function selectOperator(source$: Observable<T>): Observable<K> {\n let mapped$: Observable<any>;\n\n if (typeof pathOrMapFn === 'string') {\n const pathSlices = [<string>propsOrPath, ...paths].filter(Boolean);\n mapped$ = source$.pipe(pluck(pathOrMapFn, ...pathSlices));\n } else if (typeof pathOrMapFn === 'function') {\n mapped$ = source$.pipe(\n map((source) => pathOrMapFn(source, <Props>propsOrPath))\n );\n } else {\n throw new TypeError(\n `Unexpected type '${typeof pathOrMapFn}' in select operator,` +\n ` expected 'string' or 'function'`\n );\n }\n\n return mapped$.pipe(distinctUntilChanged());\n };\n}\n","export function capitalize<T extends string>(text: T): Capitalize<T> {\n return (text.charAt(0).toUpperCase() + text.substr(1)) as Capitalize<T>;\n}\n","export const RUNTIME_CHECK_URL =\n 'https://ngrx.io/guide/store/configuration/runtime-checks';\n\nexport function isUndefined(target: any): target is undefined {\n return target === undefined;\n}\n\nexport function isNull(target: any): target is null {\n return target === null;\n}\n\nexport function isArray(target: any): target is Array<any> {\n return Array.isArray(target);\n}\n\nexport function isString(target: any): target is string {\n return typeof target === 'string';\n}\n\nexport function isBoolean(target: any): target is boolean {\n return typeof target === 'boolean';\n}\n\nexport function isNumber(target: any): target is number {\n return typeof target === 'number';\n}\n\nexport function isObjectLike(target: any): target is object {\n return typeof target === 'object' && target !== null;\n}\n\nexport function isObject(target: any): target is object {\n return isObjectLike(target) && !isArray(target);\n}\n\nexport function isPlainObject(target: any): target is object {\n if (!isObject(target)) {\n return false;\n }\n\n const targetPrototype = Object.getPrototypeOf(target);\n return targetPrototype === Object.prototype || targetPrototype === null;\n}\n\nexport function isFunction(target: any): target is () => void {\n return typeof target === 'function';\n}\n\nexport function isComponent(target: any) {\n return isFunction(target) && target.hasOwnProperty('ɵcmp');\n}\n\nexport function hasOwnProperty(target: object, propertyName: string): boolean {\n return Object.prototype.hasOwnProperty.call(target, propertyName);\n}\n","let _ngrxMockEnvironment = false;\nexport function setNgrxMockEnvironment(value: boolean): void {\n _ngrxMockEnvironment = value;\n}\nexport function isNgrxMockEnvironment(): boolean {\n return _ngrxMockEnvironment;\n}\n","import { Selector, SelectorWithProps } from './models';\nimport { isDevMode } from '@angular/core';\nimport { isNgrxMockEnvironment } from './flags';\n\nexport type AnyFn = (...args: any[]) => any;\n\nexport type MemoizedProjection = {\n memoized: AnyFn;\n reset: () => void;\n setResult: (result?: any) => void;\n clearResult: () => void;\n};\n\nexport type MemoizeFn = (t: AnyFn) => MemoizedProjection;\n\nexport type ComparatorFn = (a: any, b: any) => boolean;\n\nexport type DefaultProjectorFn<T> = (...args: any[]) => T;\n\nexport interface MemoizedSelector<\n State,\n Result,\n ProjectorFn = DefaultProjectorFn<Result>\n> extends Selector<State, Result> {\n release(): void;\n projector: ProjectorFn;\n setResult: (result?: Result) => void;\n clearResult: () => void;\n}\n\n/**\n * @deprecated Selectors with props are deprecated, for more info see {@link https://github.com/ngrx/platform/issues/2980 Github Issue}\n */\nexport interface MemoizedSelectorWithProps<\n State,\n Props,\n Result,\n ProjectorFn = DefaultProjectorFn<Result>\n> extends SelectorWithProps<State, Props, Result> {\n release(): void;\n projector: ProjectorFn;\n setResult: (result?: Result) => void;\n clearResult: () => void;\n}\n\nexport function isEqualCheck(a: any, b: any): boolean {\n return a === b;\n}\n\nfunction isArgumentsChanged(\n args: IArguments,\n lastArguments: IArguments,\n comparator: ComparatorFn\n) {\n for (let i = 0; i < args.length; i++) {\n if (!comparator(args[i], lastArguments[i])) {\n return true;\n }\n }\n return false;\n}\n\nexport function resultMemoize(\n projectionFn: AnyFn,\n isResultEqual: ComparatorFn\n) {\n return defaultMemoize(projectionFn, isEqualCheck, isResultEqual);\n}\n\nexport function defaultMemoize(\n projectionFn: AnyFn,\n isArgumentsEqual = isEqualCheck,\n isResultEqual = isEqualCheck\n): MemoizedProjection {\n let lastArguments: null | IArguments = null;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, , , , ,\n let lastResult: any = null;\n let overrideResult: any;\n\n function reset() {\n lastArguments = null;\n lastResult = null;\n }\n\n function setResult(result: any = undefined) {\n overrideResult = { result };\n }\n\n function clearResult() {\n overrideResult = undefined;\n }\n\n /* eslint-disable prefer-rest-params, prefer-spread */\n // disabled because of the use of `arguments`\n function memoized(): any {\n if (overrideResult !== undefined) {\n return overrideResult.result;\n }\n\n if (!lastArguments) {\n lastResult = projectionFn.apply(null, arguments as any);\n lastArguments = arguments;\n return lastResult;\n }\n\n if (!isArgumentsChanged(arguments, lastArguments, isArgumentsEqual)) {\n return lastResult;\n }\n\n const newResult = projectionFn.apply(null, arguments as any);\n lastArguments = arguments;\n\n if (isResultEqual(lastResult, newResult)) {\n return lastResult;\n }\n\n lastResult = newResult;\n\n return newResult;\n }\n\n return { memoized, reset, setResult, clearResult };\n}\n\nexport function createSelector<State, S1, Result>(\n s1: Selector<State, S1>,\n projector: (s1: S1) => Result\n): MemoizedSelector<State, Result>;\n/**\n * @deprecated Selectors with props are deprecated, for more info see {@link https://github.com/ngrx/platform/issues/2980 Github Issue}\n */\nexport function createSelector<State, Props, S1, Result>(\n s1: SelectorWithProps<State, Props, S1>,\n projector: (s1: S1, props: Props) => Result\n): MemoizedSelectorWithProps<State, Props, Result>;\nexport function createSelector<State, S1, Result>(\n selectors: [Selector<State, S1>],\n projector: (s1: S1) => Result\n): MemoizedSelector<State, Result>;\n/**\n * @deprecated Selectors with props are deprecated, for more info see {@link https://github.com/ngrx/platform/issues/2980 Github Issue}\n */\nexport function createSelector<State, Props, S1, Result>(\n selectors: [SelectorWithProps<State, Props, S1>],\n projector: (s1: S1, props: Props) => Result\n): MemoizedSelectorWithProps<State, Props, Result>;\n\nexport function createSelector<State, S1, S2, Result>(\n s1: Selector<State, S1>,\n s2: Selector<State, S2>,\n projector: (s1: S1, s2: S2) => Result\n): MemoizedSelector<State, Result>;\n/**\n * @deprecated Selectors with props are deprecated, for more info see {@link https://github.com/ngrx/platform/issues/2980 Github Issue}\n */\nexport function createSelector<State, Props, S1, S2, Result>(\n s1: SelectorWithProps<State, Props, S1>,\n s2: SelectorWithProps<State, Props, S2>,\n projector: (s1: S1, s2: S2, props: Props) => Result\n): MemoizedSelectorWithProps<State, Props, Result>;\n\nexport function createSelector<State, S1, S2, Result>(\n selectors: [Selector<State, S1>, Selector<State, S2>],\n projector: (s1: S1, s2: S2) => Result\n): MemoizedSelector<State, Result>;\n/**\n * @deprecated Selectors with props are deprecated, for more info see {@link https://github.com/ngrx/platform/issues/2980 Github Issue}\n */\nexport function createSelector<State, Props, S1, S2, Result>(\n selectors: [\n SelectorWithProps<State, Props, S1>,\n SelectorWithProps<State, Props, S2>\n ],\n projector: (s1: S1, s2: S2, props: Props) => Result\n): MemoizedSelectorWithProps<State, Props, Result>;\n\nexport function createSelector<State, S1, S2, S3, Result>(\n s1: Selector<State, S1>,\n s2: Selector<State, S2>,\n s3: Selector<State, S3>,\n projector: (s1: S1, s2: S2, s3: S3) => Result\n): MemoizedSelector<State, Result>;\n/**\n * @deprecated Selectors with props are deprecated, for more info see {@link https://github.com/ngrx/platform/issues/2980 Github Issue}\n */\nexport function createSelector<State, Props, S1, S2, S3, Result>(\n s1: SelectorWithProps<State, Props, S1>,\n s2: SelectorWithProps<State, Props, S2>,\n s3: SelectorWithProps<State, Props, S3>,\n projector: (s1: S1, s2: S2, s3: S3, props: Props) => Result\n): MemoizedSelectorWithProps<State, Props, Result>;\nexport function createSelector<State, S1, S2, S3, Result>(\n selectors: [Selector<State, S1>, Selector<State, S2>, Selector<State, S3>],\n projector: (s1: S1, s2: S2, s3: S3) => Result\n): MemoizedSelector<State, Result>;\n/**\n * @deprecated Selectors with props are deprecated, for more info see {@link https://github.com/ngrx/platform/issues/2980 Github Issue}\n */\nexport function createSelector<State, Props, S1, S2, S3, Result>(\n selectors: [\n SelectorWithProps<State, Props, S1>,\n SelectorWithProps<State, Props, S2>,\n SelectorWithProps<State, Props, S3>\n ],\n projector: (s1: S1, s2: S2, s3: S3, props: Props) => Result\n): MemoizedSelectorWithProps<State, Props, Result>;\n\nexport function createSelector<State, S1, S2, S3, S4, Result>(\n s1: Selector<State, S1>,\n s2: Selector<State, S2>,\n s3: Selector<State, S3>,\n s4: Selector<State, S4>,\n projector: (s1: S1, s2: S2, s3: S3, s4: S4) => Result\n): MemoizedSelector<State, Result>;\n/**\n * @deprecated Selectors with props are deprecated, for more info see {@link https://github.com/ngrx/platform/issues/2980 Github Issue}\n */\nexport function createSelector<State, Props, S1, S2, S3, S4, Result>(\n s1: SelectorWithProps<State, Props, S1>,\n s2: SelectorWithProps<State, Props, S2>,\n s3: SelectorWithProps<State, Props, S3>,\n s4: SelectorWithProps<State, Props, S4>,\n projector: (s1: S1, s2: S2, s3: S3, s4: S4, props: Props) => Result\n): MemoizedSelectorWithProps<State, Props, Result>;\nexport function createSelector<State, S1, S2, S3, S4, Result>(\n selectors: [\n Selector<State, S1>,\n Selector<State, S2>,\n Selector<State, S3>,\n Selector<State, S4>\n ],\n projector: (s1: S1, s2: S2, s3: S3, s4: S4) => Result\n): MemoizedSelector<State, Result>;\n/**\n * @deprecated Selectors with props are deprecated, for more info see {@link https://github.com/ngrx/platform/issues/2980 Github Issue}\n */\nexport function createSelector<State, Props, S1, S2, S3, S4, Result>(\n selectors: [\n SelectorWithProps<State, Props, S1>,\n SelectorWithProps<State, Props, S2>,\n SelectorWithProps<State, Props, S3>,\n SelectorWithProps<State, Props, S4>\n ],\n projector: (s1: S1, s2: S2, s3: S3, s4: S4, props: Props) => Result\n): MemoizedSelectorWithProps<State, Props, Result>;\n\nexport function createSelector<State, S1, S2, S3, S4, S5, Result>(\n s1: Selector<State, S1>,\n s2: Selector<State, S2>,\n s3: Selector<State, S3>,\n s4: Selector<State, S4>,\n s5: Selector<State, S5>,\n projector: (s1: S1, s2: S2, s3: S3, s4: S4, s5: S5) => Result\n): MemoizedSelector<State, Result>;\n/**\n * @deprecated Selectors with props are deprecated, for more info see {@link https://github.com/ngrx/platform/issues/2980 Github Issue}\n */\nexport function createSelector<State, Props, S1, S2, S3, S4, S5, Result>(\n s1: SelectorWithProps<State, Props, S1>,\n s2: SelectorWithProps<State, Props, S2>,\n s3: SelectorWithProps<State, Props, S3>,\n s4: SelectorWithProps<State, Props, S4>,\n s5: SelectorWithProps<State, Props, S5>,\n projector: (s1: S1, s2: S2, s3: S3, s4: S4, s5: S5, props: Props) => Result\n): MemoizedSelectorWithProps<State, Props, Result>;\nexport function createSelector<State, S1, S2, S3, S4, S5, Result>(\n selectors: [\n Selector<State, S1>,\n Selector<State, S2>,\n Selector<State, S3>,\n Selector<State, S4>,\n Selector<State, S5>\n ],\n projector: (s1: S1, s2: S2, s3: S3, s4: S4, s5: S5) => Result\n): MemoizedSelector<State, Result>;\n/**\n * @deprecated Selectors with props are deprecated, for more info see {@link https://github.com/ngrx/platform/issues/2980 Github Issue}\n */\nexport function createSelector<State, Props, S1, S2, S3, S4, S5, Result>(\n selectors: [\n SelectorWithProps<State, Props, S1>,\n SelectorWithProps<State, Props, S2>,\n SelectorWithProps<State, Props, S3>,\n SelectorWithProps<State, Props, S4>,\n SelectorWithProps<State, Props, S5>\n ],\n projector: (s1: S1, s2: S2, s3: S3, s4: S4, s5: S5, props: Props) => Result\n): MemoizedSelectorWithProps<State, Props, Result>;\n\nexport function createSelector<State, S1, S2, S3, S4, S5, S6, Result>(\n s1: Selector<State, S1>,\n s2: Selector<State, S2>,\n s3: Selector<State, S3>,\n s4: Selector<State, S4>,\n s5: Selector<State, S5>,\n s6: Selector<State, S6>,\n projector: (s1: S1, s2: S2, s3: S3, s4: S4, s5: S5, s6: S6) => Result\n): MemoizedSelector<State, Result>;\n/**\n * @deprecated Selectors with props are deprecated, for more info see {@link https://github.com/ngrx/platform/issues/2980 Github Issue}\n */\nexport function createSelector<State, Props, S1, S2, S3, S4, S5, S6, Result>(\n s1: SelectorWithProps<State, Props, S1>,\n s2: SelectorWithProps<State, Props, S2>,\n s3: SelectorWithProps<State, Props, S3>,\n s4: SelectorWithProps<State, Props, S4>,\n s5: SelectorWithProps<State, Props, S5>,\n s6: SelectorWithProps<State, Props, S6>,\n projector: (\n s1: S1,\n s2: S2,\n s3: S3,\n s4: S4,\n s5: S5,\n s6: S6,\n props: Props\n ) => Result\n): MemoizedSelectorWithProps<State, Props, Result>;\nexport function createSelector<State, S1, S2, S3, S4, S5, S6, Result>(\n selectors: [\n Selector<State, S1>,\n Selector<State, S2>,\n Selector<State, S3>,\n Selector<State, S4>,\n Selector<State, S5>,\n Selector<State, S6>\n ],\n projector: (s1: S1, s2: S2, s3: S3, s4: S4, s5: S5, s6: S6) => Result\n): MemoizedSelector<State, Result>;\n/**\n * @deprecated Selectors with props are deprecated, for more info see {@link https://github.com/ngrx/platform/issues/2980 Github Issue}\n */\nexport function createSelector<State, Props, S1, S2, S3, S4, S5, S6, Result>(\n selectors: [\n SelectorWithProps<State, Props, S1>,\n SelectorWithProps<State, Props, S2>,\n SelectorWithProps<State, Props, S3>,\n SelectorWithProps<State, Props, S4>,\n SelectorWithProps<State, Props, S5>,\n SelectorWithProps<State, Props, S6>\n ],\n projector: (\n s1: S1,\n s2: S2,\n s3: S3,\n s4: S4,\n s5: S5,\n s6: S6,\n props: Props\n ) => Result\n): MemoizedSelectorWithProps<State, Props, Result>;\n\nexport function createSelector<State, S1, S2, S3, S4, S5, S6, S7, Result>(\n s1: Selector<State, S1>,\n s2: Selector<State, S2>,\n s3: Selector<State, S3>,\n s4: Selector<State, S4>,\n s5: Selector<State, S5>,\n s6: Selector<State, S6>,\n s7: Selector<State, S7>,\n projector: (s1: S1, s2: S2, s3: S3, s4: S4, s5: S5, s6: S6, s7: S7) => Result\n): MemoizedSelector<State, Result>;\n/**\n * @deprecated Selectors with props are deprecated, for more info see {@link https://github.com/ngrx/platform/issues/2980 Github Issue}\n */\nexport function createSelector<\n State,\n Props,\n S1,\n S2,\n S3,\n S4,\n S5,\n S6,\n S7,\n Result\n>(\n s1: SelectorWithProps<State, Props, S1>,\n s2: SelectorWithProps<State, Props, S2>,\n s3: SelectorWithProps<State, Props, S3>,\n s4: SelectorWithProps<State, Props, S4>,\n s5: SelectorWithProps<State, Props, S5>,\n s6: SelectorWithProps<State, Props, S6>,\n s7: SelectorWithProps<State, Props, S7>,\n projector: (\n s1: S1,\n s2: S2,\n s3: S3,\n s4: S4,\n s5: S5,\n s6: S6,\n s7: S7,\n props: Props\n ) => Result\n): MemoizedSelectorWithProps<State, Props, Result>;\nexport function createSelector<State, S1, S2, S3, S4, S5, S6, S7, Result>(\n selectors: [\n Selector<State, S1>,\n Selector<State, S2>,\n Selector<State, S3>,\n Selector<State, S4>,\n Selector<State, S5>,\n Selector<State, S6>,\n Selector<State, S7>\n ],\n projector: (s1: S1, s2: S2, s3: S3, s4: S4, s5: S5, s6: S6, s7: S7) => Result\n): MemoizedSelector<State, Result>;\n/**\n * @deprecated Selectors with props are deprecated, for more info see {@link https://github.com/ngrx/platform/issues/2980 Github Issue}\n */\nexport function createSelector<\n State,\n Props,\n S1,\n S2,\n S3,\n S4,\n S5,\n S6,\n S7,\n Result\n>(\n selectors: [\n SelectorWithProps<State, Props, S1>,\n SelectorWithProps<State, Props, S2>,\n SelectorWithProps<State, Props, S3>,\n SelectorWithProps<State, Props, S4>,\n SelectorWithProps<State, Props, S5>,\n SelectorWithProps<State, Props, S6>,\n SelectorWithProps<State, Props, S7>\n ],\n projector: (\n s1: S1,\n s2: S2,\n s3: S3,\n s4: S4,\n s5: S5,\n s6: S6,\n s7: S7,\n props: Props\n ) => Result\n): MemoizedSelectorWithProps<State, Props, Result>;\n\nexport function createSelector<State, S1, S2, S3, S4, S5, S6, S7, S8, Result>(\n s1: Selector<State, S1>,\n s2: Selector<State, S2>,\n s3: Selector<State, S3>,\n s4: Selector<State, S4>,\n s5: Selector<State, S5>,\n s6: Selector<State, S6>,\n s7: Selector<State, S7>,\n s8: Selector<State, S8>,\n projector: (\n s1: S1,\n s2: S2,\n s3: S3,\n s4: S4,\n s5: S5,\n s6: S6,\n s7: S7,\n s8: S8\n ) => Result\n): MemoizedSelector<State, Result>;\n/**\n * @deprecated Selectors with props are deprecated, for more info see {@link https://github.com/ngrx/platform/issues/2980 Github Issue}\n */\nexport function createSelector<\n State,\n Props,\n S1,\n S2,\n S3,\n S4,\n S5,\n S6,\n S7,\n S8,\n Result\n>(\n s1: SelectorWithProps<State, Props, S1>,\n s2: SelectorWithProps<State, Props, S2>,\n s3: SelectorWithProps<State, Props, S3>,\n s4: SelectorWithProps<State, Props, S4>,\n s5: SelectorWithProps<State, Props, S5>,\n s6: SelectorWithProps<State, Props, S6>,\n s7: SelectorWithProps<State, Props, S7>,\n s8: SelectorWithProps<State, Props, S8>,\n projector: (\n s1: S1,\n s2: S2,\n s3: S3,\n s4: S4,\n s5: S5,\n s6: S6,\n s7: S7,\n s8: S8,\n props: Props\n ) => Result\n): MemoizedSelectorWithProps<State, Props, Result>;\nexport function createSelector<State, S1, S2, S3, S4, S5, S6, S7, S8, Result>(\n selectors: [\n Selector<State, S1>,\n Selector<State, S2>,\n Selector<State, S3>,\n Selector<State, S4>,\n Selector<State, S5>,\n Selector<State, S6>,\n Selector<State, S7>,\n Selector<State, S8>\n ],\n projector: (\n s1: S1,\n s2: S2,\n s3: S3,\n s4: S4,\n s5: S5,\n s6: S6,\n s7: S7,\n s8: S8\n ) => Result\n): MemoizedSelector<State, Result>;\n/**\n * @deprecated Selectors with props are deprecated, for more info see {@link https://github.com/ngrx/platform/issues/2980 Github Issue}\n */\nexport function createSelector<\n State,\n Props,\n S1,\n S2,\n S3,\n S4,\n S5,\n S6,\n S7,\n S8,\n Result\n>(\n selectors: [\n SelectorWithProps<State, Props, S1>,\n SelectorWithProps<State, Props, S2>,\n SelectorWithProps<State, Props, S3>,\n SelectorWithProps<State, Props, S4>,\n SelectorWithProps<State, Props, S5>,\n SelectorWithProps<State, Props, S6>,\n SelectorWithProps<State, Props, S7>,\n SelectorWithProps<State, Props, S8>\n ],\n projector: (\n s1: S1,\n s2: S2,\n s3: S3,\n s4: S4,\n s5: S5,\n s6: S6,\n s7: S7,\n s8: S8,\n props: Props\n ) => Result\n): MemoizedSelectorWithProps<State, Props, Result>;\n\nexport function createSelector(\n ...input: any[]\n): MemoizedSelector<any, any> | MemoizedSelectorWithProps<any, any, any> {\n return createSelectorFactory(defaultMemoize)(...input);\n}\n\nexport function defaultStateFn(\n state: any,\n selectors: Selector<any, any>[] | SelectorWithProps<any, any, any>[],\n props: any,\n memoizedProjector: MemoizedProjection\n): any {\n if (props === undefined) {\n const args = (<Selector<any, any>[]>selectors).map((fn) => fn(state));\n return memoizedProjector.memoized.apply(null, args);\n }\n\n const args = (<SelectorWithProps<any, any, any>[]>selectors).map((fn) =>\n fn(state, props)\n );\n return memoizedProjector.memoized.apply(null, [...args, props]);\n}\n\nexport type SelectorFactoryConfig<T = any, V = any> = {\n stateFn: (\n state: T,\n selectors: Selector<any, any>[],\n props: any,\n memoizedProjector: MemoizedProjection\n ) => V;\n};\n\nexport function createSelectorFactory<T = any, V = any>(\n memoize: MemoizeFn\n): (...input: any[]) => MemoizedSelector<T, V>;\nexport function createSelectorFactory<T = any, V = any>(\n memoize: MemoizeFn,\n options: SelectorFactoryConfig<T, V>\n): (...input: any[]) => MemoizedSelector<T, V>;\n/**\n * @deprecated Selectors with props are deprecated, for more info see {@link https://github.com/ngrx/platform/issues/2980 Github Issue}\n */\nexport function createSelectorFactory<T = any, Props = any, V = any>(\n memoize: MemoizeFn\n): (...input: any[]) => MemoizedSelectorWithProps<T, Props, V>;\n/**\n * @deprecated Selectors with props are deprecated, for more info see {@link https://github.com/ngrx/platform/issues/2980 Github Issue}\n */\nexport function createSelectorFactory<T = any, Props = any, V = any>(\n memoize: MemoizeFn,\n options: SelectorFactoryConfig<T, V>\n): (...input: any[]) => MemoizedSelectorWithProps<T, Props, V>;\n/**\n *\n * @param memoize The function used to memoize selectors\n * @param options Config Object that may include a `stateFn` function defining how to return the selector's value, given the entire `Store`'s state, parent `Selector`s, `Props`, and a `MemoizedProjection`\n *\n * @usageNotes\n *\n * **Creating a Selector Factory Where Array Order Does Not Matter**\n *\n * ```ts\n * function removeMatch(arr: string[], target: string): string[] {\n * const matchIndex = arr.indexOf(target);\n * return [...arr.slice(0, matchIndex), ...arr.slice(matchIndex + 1)];\n * }\n *\n * function orderDoesNotMatterComparer(a: any, b: any): boolean {\n * if (!Array.isArray(a) || !Array.isArray(b)) {\n * return a === b;\n * }\n * if (a.length !== b.length) {\n * return false;\n * }\n * let tempB = [...b];\n * function reduceToDetermineIfArraysContainSameContents(\n * previousCallResult: boolean,\n * arrayMember: any\n * ): boolean {\n * if (previousCallResult === false) {\n * return false;\n * }\n * if (tempB.includes(arrayMember)) {\n * tempB = removeMatch(tempB, arrayMember);\n * return true;\n * }\n * return false;\n * }\n * return a.reduce(reduceToDetermineIfArraysContainSameContents, true);\n * }\n *\n * export const creactOrderDoesNotMatterSelector = createSelectorFactory(\n * (projectionFun) => defaultMemoize(\n * projectionFun,\n * orderDoesNotMatterComparer,\n * orderDoesNotMatterComparer\n * )\n * );\n * ```\n *\n * **Creating an Alternative Memoization Strategy**\n *\n * ```ts\n * function serialize(x: any): string {\n * return JSON.stringify(x);\n * }\n *\n * export const createFullHistorySelector = createSelectorFactory(\n * (projectionFunction) => {\n * const cache = {};\n *\n * function memoized() {\n * const serializedArguments = serialize(...arguments);\n * if (cache[serializedArguments] != null) {\n * cache[serializedArguments] = projectionFunction.apply(null, arguments);\n * }\n * return cache[serializedArguments];\n * }\n * return {\n * memoized,\n * reset: () => {},\n * setResult: () => {},\n * clearResult: () => {},\n * };\n * }\n * );\n * ```\n *\n *\n */\nexport function createSelectorFactory(\n memoize: MemoizeFn,\n options: SelectorFactoryConfig<any, any> = {\n stateFn: defaultStateFn,\n }\n) {\n return function (\n ...input: any[]\n ): MemoizedSelector<any, any> | MemoizedSelectorWithProps<any, any, any> {\n let args = input;\n if (Array.isArray(args[0])) {\n const [head, ...tail] = args;\n args = [...head, ...tail];\n }\n\n const selectors = args.slice(0, args.length - 1);\n const projector = args[args.length - 1];\n const memoizedSelectors = selectors.filter(\n (selector: any) =>\n selector.release && typeof selector.release === 'function'\n );\n\n const memoizedProjector = memoize(function (...selectors: any[]) {\n return projector.apply(null, selectors);\n });\n\n const memoizedState = defaultMemoize(function (state: any, props: any) {\n return options.stateFn.apply(null, [\n state,\n selectors,\n props,\n memoizedProjector,\n ]);\n });\n\n function release() {\n memoizedState.reset();\n memoizedProjector.reset();\n\n memoizedSelectors.forEach((selector) => selector.release());\n }\n\n return Object.assign(memoizedState.memoized, {\n release,\n projector: memoizedProjector.memoized,\n setResult: memoizedState.setResult,\n clearResult: memoizedState.clearResult,\n });\n };\n}\n\nexport function createFeatureSelector<T>(\n featureName: string\n): MemoizedSelector<object, T>;\nexport function createFeatureSelector<T, V>(\n featureName: keyof T\n): MemoizedSelector<T, V>;\nexport function createFeatureSelector(\n featureName: any\n): MemoizedSelector<any, any> {\n return createSelector(\n (state: any) => {\n const featureState = state[featureName];\n if (!isNgrxMockEnvironment() && isDevMode() && !(featureName in state)) {\n console.warn(\n `@ngrx/store: The feature name \"${featureName}\" does ` +\n 'not exist in the state, therefore createFeatureSelector ' +\n 'cannot access it. Be sure it is imported in a loaded module ' +\n `using StoreModule.forRoot('${featureName}', ...) or ` +\n `StoreModule.forFeature('${featureName}', ...). If the default ` +\n 'state is intended to be undefined, as is the case with router ' +\n 'state, this development-only warning message can be ignored.'\n );\n }\n return featureState;\n },\n (featureState: any) => featureState\n );\n}\n","import { capitalize } from './helpers';\nimport { ActionReducer } from './models';\nimport { isPlainObject } from './meta-reducers/utils';\nimport {\n createFeatureSelector,\n createSelector,\n MemoizedSelector,\n} from './selector';\nimport { FeatureSelector, NestedSelectors } from './feature_creator_models';\n\nexport type Feature<\n AppState extends Record<string, any>,\n FeatureName extends keyof AppState & string,\n FeatureState extends AppState[FeatureName]\n> = FeatureConfig<FeatureName, FeatureState> &\n FeatureSelector<AppState, FeatureName, FeatureState> &\n NestedSelectors<AppState, FeatureState>;\n\nexport interface FeatureConfig<FeatureName extends string, FeatureState> {\n name: FeatureName;\n reducer: ActionReducer<FeatureState>;\n}\n\ntype NotAllowedFeatureStateCheck<\n FeatureState\n> = FeatureState extends Required<FeatureState>\n ? unknown\n : 'optional properties are not allowed in the feature state';\n\n/**\n * @description\n * A function that accepts a feature name and a feature reducer, and creates\n * a feature selector and a selector for each feature state property.\n *\n * @param featureConfig An object that contains a feature name and a feature reducer.\n * @returns An object that contains a feature name, a feature reducer,\n * a feature selector, a the selector for each feature state property.\n *\n * @usageNotes\n *\n * **With Application State**\n *\n * ```ts\n * interface AppState {\n * products: ProductsState;\n * }\n *\n * interface ProductsState {\n * products: Product[];\n * selectedId: string | null;\n * }\n *\n * const initialState: ProductsState = {\n * products: [],\n * selectedId: null,\n * };\n *\n * // AppState is passed as a generic argument\n * const productsFeature = createFeature<AppState>({\n * name: 'products',\n * reducer: createReducer(\n * initialState,\n * on(ProductsApiActions.loadSuccess(state, { products }) => ({\n * ...state,\n * products,\n * }),\n * ),\n * });\n *\n * const {\n * selectProductsState, // type: MemoizedSelector<AppState, ProductsState>\n * selectProducts, // type: MemoizedSelector<AppState, Product[]>\n * selectSelectedId, // type: MemoizedSelector<AppState, string | null>\n * } = productsFeature;\n * ```\n *\n * **Without Application State**\n *\n * ```ts\n * const productsFeature = createFeature({\n * name: 'products',\n * reducer: createReducer(initialState),\n * });\n *\n * const {\n * selectProductsState, // type: MemoizedSelector<Record<string, any>, ProductsState>\n * selectProducts, // type: MemoizedSelector<Record<string, any>, Product[]>\n * selectSelectedId, // type: MemoizedSelector<Record<string, any, string | null>\n * } = productsFeature;\n * ```\n */\nexport function createFeature<\n AppState extends Record<string, any>,\n FeatureName extends keyof AppState & string = keyof AppState & string,\n FeatureState extends AppState[FeatureName] = AppState[FeatureName]\n>(\n featureConfig: FeatureConfig<FeatureName, FeatureState> &\n NotAllowedFeatureStateCheck<FeatureState>\n): Feature<AppState, FeatureName, FeatureState> {\n const { name, reducer } = featureConfig;\n const featureSelector = createFeatureSelector<AppState, FeatureState>(name);\n const nestedSelectors = createNestedSelectors(featureSelector, reducer);\n\n return ({\n name,\n reducer,\n [`select${capitalize(name)}State`]: featureSelector,\n ...nestedSelectors,\n } as unknown) as Feature<AppState, FeatureName, FeatureState>;\n}\n\nfunction createNestedSelectors<\n AppState extends Record<string, any>,\n FeatureState\n>(\n featureSelector: MemoizedSelector<AppState, FeatureState>,\n reducer: ActionReducer<FeatureState>\n): NestedSelectors<AppState, FeatureState> {\n const initialState = getInitialState(reducer);\n const nestedKeys = (isPlainObject(initialState)\n ? Object.keys(initialState)\n : []) as Array<keyof FeatureState & string>;\n\n return nestedKeys.reduce(\n (nestedSelectors, nestedKey) => ({\n ...nestedSelectors,\n [`select${capitalize(nestedKey)}`]: createSelector(\n featureSelector,\n (parentState) => parentState?.[nestedKey]\n ),\n }),\n {} as NestedSelectors<AppState, FeatureState>\n );\n}\n\nfunction getInitialState<FeatureState>(\n reducer: ActionReducer<FeatureState>\n): FeatureState {\n return reducer(undefined, { type: '@ngrx/feature/init' });\n}\n","import { ActionReducer, Action } from '../models';\nimport { isFunction, hasOwnProperty, isObjectLike } from './utils';\n\nexport function immutabilityCheckMetaReducer(\n reducer: ActionReducer<any, any>,\n checks: { action: (action: Action) => boolean; state: () => boolean }\n): ActionReducer<any, any> {\n return function (state, action) {\n const act = checks.action(action) ? freeze(action) : action;\n\n const nextState = reducer(state, act);\n\n return checks.state() ? freeze(nextState) : nextState;\n };\n}\n\nfunction freeze(target: any) {\n Object.freeze(target);\n\n const targetIsFunction = isFunction(target);\n\n Object.getOwnPropertyNames(target).forEach((prop) => {\n // Ignore Ivy properties, ref: https://github.com/ngrx/platform/issues/2109#issuecomment-582689060\n if (prop.startsWith('ɵ')) {\n return;\n }\n\n if (\n hasOwnProperty(target, prop) &&\n (targetIsFunction\n ? prop !== 'caller' && prop !== 'callee' && prop !== 'arguments'\n : true)\n ) {\n const propValue = target[prop];\n\n if (\n (isObjectLike(propValue) || isFunction(propValue)) &&\n !Object.isFrozen(propValue)\n ) {\n freeze(propValue);\n }\n }\n });\n\n return target;\n}\n","import { ActionReducer, Action } from '../models';\nimport {\n isPlainObject,\n isUndefined,\n isNull,\n isNumber,\n isBoolean,\n isString,\n isArray,\n RUNTIME_CHECK_URL,\n isComponent,\n} from './utils';\n\nexport function serializationCheckMetaReducer(\n reducer: ActionReducer<any, any>,\n checks: { action: (action: Action) => boolean; state: () => boolean }\n): ActionReducer<any, any> {\n return function (state, action) {\n if (checks.action(action)) {\n const unserializableAction = getUnserializable(action);\n throwIfUnserializable(unserializableAction, 'action');\n }\n\n const nextState = reducer(state, action);\n\n if (checks.state()) {\n const unserializableState = getUnserializable(nextState);\n throwIfUnserializable(unserializableState, 'state');\n }\n\n return nextState;\n };\n}\n\nfunction getUnserializable(\n target?: any,\n path: string[] = []\n): false | { path: string[]; value: any } {\n // Guard against undefined and null, e.g. a reducer that returns undefined\n if ((isUndefined(target) || isNull(target)) && path.length === 0) {\n return {\n path: ['root'],\n value: target,\n };\n }\n\n const keys = Object.keys(target);\n return keys.reduce<false | { path: string[]; value: any }>((result, key) => {\n if (result) {\n return result;\n }\n\n const value = (target as any)[key];\n\n // Ignore Ivy components\n if (isComponent(value)) {\n return result;\n }\n\n if (\n isUndefined(value) ||\n isNull(value) ||\n isNumber(value) ||\n isBoolean(value) ||\n isString(value) ||\n isArray(value)\n ) {\n return false;\n }\n\n if (isPlainObject(value)) {\n return getUnserializable(value, [...path, key]);\n }\n\n return {\n path: [...path, key],\n value,\n };\n }, false);\n}\n\nfunction throwIfUnserializable(\n unserializable: false | { path: string[]; value: any },\n context: 'state' | 'action'\n) {\n if (unserializable === false) {\n return;\n }\n\n const unserializablePath = unserializable.path.join('.');\n const error: any = new Error(\n `Detected unserializable ${context} at \"${unserializablePath}\". ${RUNTIME_CHECK_URL}#strict${context}serializability`\n );\n error.value = unserializable.value;\n error.unserializablePath = unserializablePath;\n throw error;\n}\n","import * as ngCore from '@angular/core';\nimport { Action, ActionReducer } from '../models';\nimport { RUNTIME_CHECK_URL } from './utils';\n\nexport function inNgZoneAssertMetaReducer(\n reducer: ActionReducer<any, Action>,\n checks: { action: (action: Action) => boolean }\n) {\n return function (state: any, action: Action) {\n if (checks.action(action) && !ngCore.NgZone.isInAngularZone()) {\n throw new Error(\n `Action '${action.type}' running outside NgZone. ${RUNTIME_CHECK_URL}#strictactionwithinngzone`\n );\n }\n return reducer(state, action);\n };\n}\n","import { isDevMode, Provider } from '@angular/core';\nimport {\n serializationCheckMetaReducer,\n immutabilityCheckMetaReducer,\n inNgZoneAssertMetaReducer,\n} from './meta-reducers';\nimport { RuntimeChecks, MetaReducer, Action } from './models';\nimport {\n _USER_RUNTIME_CHECKS,\n ACTIVE_RUNTIME_CHECKS,\n META_REDUCERS,\n USER_RUNTIME_CHECKS,\n _ACTION_TYPE_UNIQUENESS_CHECK,\n} from './tokens';\nimport { REGISTERED_ACTION_TYPES } from './globals';\nimport { RUNTIME_CHECK_URL } from './meta-reducers/utils';\n\nexport function createActiveRuntimeChecks(\n runtimeChecks?: Partial<RuntimeChecks>\n): RuntimeChecks {\n if (isDevMode()) {\n return {\n strictStateSerializability: false,\n strictActionSerializability: false,\n strictStateImmutability: true,\n strictActionImmutability: true,\n strictActionWithinNgZone: false,\n strictActionTypeUniqueness: false,\n ...runtimeChecks,\n };\n }\n\n return {\n strictStateSerializability: false,\n strictActionSerializability: false,\n strictStateImmutability: false,\n strictActionImmutability: false,\n strictActionWithinNgZone: false,\n strictActionTypeUniqueness: false,\n };\n}\n\nexport function createSerializationCheckMetaReducer({\n strictActionSerializability,\n strictStateSerializability,\n}: RuntimeChecks): MetaReducer {\n return (reducer) =>\n strictActionSerializability || strictStateSerializability\n ? serializationCheckMetaReducer(reducer, {\n action: (action) =>\n strictActionSerializability && !ignoreNgrxAction(action),\n state: () => strictStateSerializability,\n })\n : reducer;\n}\n\nexport function createImmutabilityCheckMetaReducer({\n strictActionImmutability,\n strictStateImmutability,\n}: RuntimeChecks): MetaReducer {\n return (reducer) =>\n strictActionImmutability || strictStateImmutability\n ? immutabilityCheckMetaReducer(reducer, {\n action: (action) =>\n strictActionImmutability && !ignoreNgrxAction(action),\n state: () => strictStateImmutability,\n })\n : reducer;\n}\n\nfunction ignoreNgrxAction(action: Action) {\n return action.type.startsWith('@ngrx');\n}\n\nexport function createInNgZoneCheckMetaReducer({\n strictActionWithinNgZone,\n}: RuntimeChecks): MetaReducer {\n return (reducer) =>\n strictActionWithinNgZone\n ? inNgZoneAssertMetaReducer(reducer, {\n action: (action) =>\n strictActionWithinNgZone && !ignoreNgrxAction(action),\n })\n : reducer;\n}\n\nexport function provideRuntimeChecks(\n runtimeChecks?: Partial<RuntimeChecks>\n): Provider[] {\n return [\n {\n provide: _USER_RUNTIME_CHECKS,\n useValue: runtimeChecks,\n },\n {\n provide: USER_RUNTIME_CHECKS,\n useFactory: _runtimeChecksFactory,\n deps: [_USER_RUNTIME_CHECKS],\n },\n {\n provide: ACTIVE_RUNTIME_CHECKS,\n deps: [USER_RUNTIME_CHECKS],\n useFactory: createActiveRuntimeChecks,\n },\n {\n provide: META_REDUCERS,\n multi: true,\n deps: [ACTIVE_RUNTIME_CHECKS],\n useFactory: createImmutabilityCheckMetaReducer,\n },\n {\n provide: META_REDUCERS,\n multi: true,\n deps: [ACTIVE_RUNTIME_CHECKS],\n useFactory: createSerializationCheckMetaReducer,\n },\n {\n provide: META_REDUCERS,\n multi: true,\n deps: [ACTIVE_RUNTIME_CHECKS],\n useFactory: createInNgZoneCheckMetaReducer,\n },\n ];\n}\n\nexport function checkForActionTypeUniqueness(): Provider[] {\n return [\n {\n provide: _ACTION_TYPE_UNIQUENESS_CHECK,\n multi: true,\n deps: [ACTIVE_RUNTIME_CHECKS],\n useFactory: _actionTypeUniquenessCheck,\n },\n ];\n}\n\nexport function _runtimeChecksFactory(\n runtimeChecks: RuntimeChecks\n): RuntimeChecks {\n return runtimeChecks;\n}\n\nexport function _actionTypeUniquenessCheck(config: RuntimeChecks): void {\n if (!config.strictActionTypeUniqueness) {\n return;\n }\n\n const duplicates = Object.entries(REGISTERED_ACTION_TYPES)\n .filter(([, registrations]) => registrations > 1)\n .map(([type]) => type);\n\n if (duplicates.length) {\n throw new Error(\n `Action types are registered more than once, ${duplicates\n .map((type) => `\"${type}\"`)\n .join(', ')}. ${RUNTIME_CHECK_URL}#strictactiontypeuniqueness`\n );\n }\n}\n","import {\n NgModule,\n Inject,\n ModuleWithProviders,\n OnDestroy,\n InjectionToken,\n Injector,\n Optional,\n SkipSelf,\n} from '@angular/core';\nimport {\n Action,\n ActionReducer,\n ActionReducerMap,\n ActionReducerFactory,\n StoreFeature,\n InitialState,\n MetaReducer,\n RuntimeChecks,\n} from './models';\nimport { combineReducers, createReducerFactory } from './utils';\nimport {\n INITIAL_STATE,\n INITIAL_REDUCERS,\n _INITIAL_REDUCERS,\n REDUCER_FACTORY,\n _REDUCER_FACTORY,\n STORE_FEATURES,\n _INITIAL_STATE,\n META_REDUCERS,\n _STORE_REDUCERS,\n FEATURE_REDUCERS,\n _FEATURE_REDUCERS,\n _FEATURE_REDUCERS_TOKEN,\n _STORE_FEATURES,\n _FEATURE_CONFIGS,\n USER_PROVIDED_META_REDUCERS,\n _RESOLVED_META_REDUCERS,\n _ROOT_STORE_GUARD,\n ACTIVE_RUNTIME_CHECKS,\n _ACTION_TYPE_UNIQUENESS_CHECK,\n} from './tokens';\nimport { ACTIONS_SUBJECT_PROVIDERS, ActionsSubject } from './actions_subject';\nimport {\n REDUCER_MANAGER_PROVIDERS,\n ReducerManager,\n ReducerObservable,\n} from './reducer_manager';\nimport {\n SCANNED_ACTIONS_SUBJECT_PROVIDERS,\n ScannedActionsSubject,\n} from './scanned_actions_subject';\nimport { STATE_PROVIDERS } from './state';\nimport { STORE_PROVIDERS, Store } from './store';\nimport {\n provideRuntimeChecks,\n checkForActionTypeUniqueness,\n} from './runtime_checks';\n\n@NgModule({})\nexport class StoreRootModule {\n constructor(\n actions$: ActionsSubject,\n reducer$: ReducerObservable,\n scannedActions$: ScannedActionsSubject,\n store: Store<any>,\n @Optional()\n @Inject(_ROOT_STORE_GUARD)\n guard: any,\n @Optional()\n @Inject(_ACTION_TYPE_UNIQUENESS_CHECK)\n actionCheck: any\n ) {}\n}\n\n@NgModule({})\nexport class StoreFeatureModule implements OnDestroy {\n constructor(\n @Inject(_STORE_FEATURES) private features: StoreFeature<any, any>[],\n @Inject(FEATURE_REDUCERS) private featureReducers: ActionReducerMap<any>[],\n private reducerManager: ReducerManager,\n root: StoreRootModule,\n @Optional()\n @Inject(_ACTION_TYPE_UNIQUENESS_CHECK)\n actionCheck: any\n ) {\n const feats = features.map((feature, index) => {\n const featureReducerCollection = featureReducers.shift();\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const reducers = featureReducerCollection! /*TODO(#823)*/[index];\n\n return {\n ...feature,\n reducers,\n initialState: _initialStateFactory(feature.initialState),\n };\n });\n\n reducerManager.addFeatures(feats);\n }\n\n // eslint-disable-next-line @angular-eslint/contextual-lifecycle\n ngOnDestroy() {\n this.reducerManager.removeFeatures(this.features);\n }\n}\n\nexport interface StoreConfig<T, V extends Action = Action> {\n initialState?: InitialState<T>;\n reducerFactory?: ActionReducerFactory<T, V>;\n metaReducers?: MetaReducer<T, V>[];\n}\n\nexport interface RootStoreConfig<T, V extends Action = Action>\n extends StoreConfig<T, V> {\n runtimeChecks?: Partial<RuntimeChecks>;\n}\n\n/**\n * An object with the name and the reducer for the feature.\n */\nexport interface FeatureSlice<T, V extends Action = Action> {\n name: string;\n reducer: ActionReducer<T, V>;\n}\n\n@NgModule({})\nexport class StoreModule {\n static forRoot<T, V extends Action = Action>(\n reducers: ActionReducerMap<T, V> | InjectionToken<ActionReducerMap<T, V>>,\n config?: RootStoreConfig<T, V>\n ): ModuleWithProviders<StoreRootModule>;\n static forRoot(\n reducers:\n | ActionReducerMap<any, any>\n | InjectionToken<ActionReducerMap<any, any>>,\n config: RootStoreConfig<any, any> = {}\n ): ModuleWithProviders<StoreRootModule> {\n return {\n ngModule: StoreRootModule,\n providers: [\n {\n provide: _ROOT_STORE_GUARD,\n useFactory: _provideForRootGuard,\n deps: [[Store, new Optional(), new SkipSelf()]],\n },\n { provide: _INITIAL_STATE, useValue: config.initialState },\n {\n provide: INITIAL_STATE,\n useFactory: _initialStateFactory,\n deps: [_INITIAL_STATE],\n },\n { provide: _INITIAL_REDUCERS, useValue: reducers },\n {\n provide: _STORE_REDUCERS,\n useExisting:\n reducers instanceof InjectionToken ? reducers : _INITIAL_REDUCERS,\n },\n {\n provide: INITIAL_REDUCERS,\n deps: [Injector, _INITIAL_REDUCERS, [new Inject(_STORE_REDUCERS)]],\n useFactory: _createStoreReducers,\n },\n {\n provide: USER_PROVIDED_META_REDUCERS,\n useValue: config.metaReducers ? config.metaReducers : [],\n },\n {\n provide: _RESOLVED_META_REDUCERS,\n deps: [META_REDUCERS, USER_PROVIDED_META_REDUCERS],\n useFactory: _concatMetaReducers,\n },\n {\n provide: _REDUCER_FACTORY,\n useValue: config.reducerFactory\n ? config.reducerFactory\n : combineReducers,\n },\n {\n provide: REDUCER_FACTORY,\n deps: [_REDUCER_FACTORY, _RESOLVED_META_REDUCERS],\n useFactory: createReducerFactory,\n },\n ACTIONS_SUBJECT_PROVIDERS,\n REDUCER_MANAGER_PROVIDERS,\n SCANNED_ACTIONS_SUBJECT_PROVIDERS,\n STATE_PROVIDERS,\n STORE_PROVIDERS,\n provideRuntimeChecks(config.runtimeChecks),\n checkForActionTypeUniqueness(),\n ],\n };\n }\n\n static forFeature<T, V extends Action = Action>(\n featureName: string,\n reducers: ActionReducerMap<T, V> | InjectionToken<ActionReducerMap<T, V>>,\n config?: StoreConfig<T, V> | InjectionToken<StoreConfig<T, V>>\n ): ModuleWithProviders<StoreFeatureModule>;\n static forFeature<T, V extends Action = Action>(\n featureName: string,\n reducer: ActionReducer<T, V> | InjectionToken<ActionReducer<T, V>>,\n config?: StoreConfig<T, V> | InjectionToken<StoreConfig<T, V>>\n ): ModuleWithProviders<StoreFeatureModule>;\n static forFeature<T, V extends Action = Action>(\n slice: FeatureSlice<T, V>,\n config?: StoreConfig<T, V> | InjectionToken<StoreConfig<T, V>>\n ): ModuleWithProviders<StoreFeatureModule>;\n static forFeature(\n featureNameOrSlice: string | FeatureSlice<any, any>,\n reducersOrConfig?:\n | ActionReducerMap<any, any>\n | InjectionToken<ActionReducerMap<any, any>>\n | ActionReducer<any, any>\n | InjectionToken<ActionReducer<any, any>>\n | StoreConfig<any, any>\n | InjectionToken<StoreConfig<any, any>>,\n config: StoreConfig<any, any> | InjectionToken<StoreConfig<any, any>> = {}\n ): ModuleWithProviders<StoreFeatureModule> {\n return {\n ngModule: StoreFeatureModule,\n providers: [\n {\n provide: _FEATURE_CONFIGS,\n multi: true,\n useValue: featureNameOrSlice instanceof Object ? {} : config,\n },\n {\n provide: STORE_FEATURES,\n multi: true,\n useValue: {\n key:\n featureNameOrSlice instanceof Object\n ? featureNameOrSlice.name\n : featureNameOrSlice,\n reducerFactory:\n !(config instanceof InjectionToken) && config.reducerFactory\n ? config.reducerFactory\n : combineReducers,\n metaReducers:\n !(config instanceof InjectionToken) && config.metaReducers\n ? config.metaReducers\n : [],\n initialState:\n !(config instanceof InjectionToken) && config.initialState\n ? config.initialState\n : undefined,\n },\n },\n {\n provide: _STORE_FEATURES,\n deps: [Injector, _FEATURE_CONFIGS, STORE_FEATURES],\n useFactory: _createFeatureStore,\n },\n {\n provide: _FEATURE_REDUCERS,\n multi: true,\n useValue:\n featureNameOrSlice instanceof Object\n ? featureNameOrSlice.reducer\n : reducersOrConfig,\n },\n {\n provide: _FEATURE_REDUCERS_TOKEN,\n multi: true,\n useExisting:\n reducersOrConfig instanceof InjectionToken\n ? reducersOrConfig\n : _FEATURE_REDUCERS,\n },\n {\n provide: FEATURE_REDUCERS,\n multi: true,\n deps: [\n Injector,\n _FEATURE_REDUCERS,\n [new Inject(_FEATURE_REDUCERS_TOKEN)],\n ],\n useFactory: _createFeatureReducers,\n },\n checkForActionTypeUniqueness(),\n ],\n };\n }\n}\n\nexport function _createStoreReducers(\n injector: Injector,\n reducers: ActionReducerMap<any, any>\n) {\n return reducers instanceof InjectionToken ? injector.get(reducers) : reducers;\n}\n\nexport function _createFeatureStore(\n injector: Injector,\n configs: StoreConfig<any, any>[] | InjectionToken<StoreConfig<any, any>>[],\n featureStores: StoreFeature<any, any>[]\n) {\n return featureStores.map((feat, index) => {\n if (configs[index] instanceof InjectionToken) {\n const conf = injector.get(configs[index]);\n return {\n key: feat.key,\n reducerFactory: conf.reducerFactory\n ? conf.reducerFactory\n : combineReducers,\n metaReducers: conf.metaReducers ? conf.metaReducers : [],\n initialState: conf.initialState,\n };\n }\n return feat;\n });\n}\n\nexport function _createFeatureReducers(\n injector: Injector,\n reducerCollection: ActionReducerMap<any, any>[]\n) {\n const reducers = reducerCollection.map((reducer) => {\n return reducer instanceof InjectionToken ? injector.get(reducer) : reducer;\n });\n\n return reducers;\n}\n\nexport function _initialStateFactory(initialState: any): any {\n if (typeof initialState === 'function') {\n return initialState();\n }\n\n return initialState;\n}\n\nexport function _concatMetaReducers(\n metaReducers: MetaReducer[],\n userProvidedMetaReducers: MetaReducer[]\n): MetaReducer[] {\n return metaReducers.concat(userProvidedMetaReducers);\n}\n\nexport function _provideForRootGuard(store: Store<any>): any {\n if (store) {\n throw new TypeError(\n `StoreModule.forRoot() called twice. Feature modules should use StoreModule.forFeature() instead.`\n );\n }\n return 'guarded';\n}\n","import { ActionCreator, ActionReducer, ActionType, Action } from './models';\n\n// Goes over the array of ActionCreators, pulls the action type out of each one\n// and returns the array of these action types.\ntype ExtractActionTypes<Creators extends readonly ActionCreator[]> = {\n [Key in keyof Creators]: Creators[Key] extends ActionCreator<infer T>\n ? T\n : never;\n};\n\n/**\n * Return type of the `on` fn.\n * Contains the action reducer coupled to one or more action types.\n */\nexport interface ReducerTypes<\n State,\n Creators extends readonly ActionCreator[]\n> {\n reducer: OnReducer<State, Creators>;\n types: ExtractActionTypes<Creators>;\n}\n\n// Specialized Reducer that is aware of the Action type it needs to handle\nexport interface OnReducer<State, Creators extends readonly ActionCreator[]> {\n (state: State, action: ActionType<Creators[number]>): State;\n}\n\n/**\n * @description\n * Associates actions with a given state change function.\n * A state change function must be provided as the last parameter.\n *\n * @param args `ActionCreator`'s followed by a state change function.\n *\n * @returns an association of action types with a state change function.\n *\n * @usageNotes\n * ```ts\n * on(AuthApiActions.loginSuccess, (state, { user }) => ({ ...state, user }))\n * ```\n */\nexport function on<State, Creators extends readonly ActionCreator[]>(\n ...args: [\n ...creators: Creators,\n reducer: OnReducer<State extends infer S ? S : never, Creators>\n ]\n): ReducerTypes<State, Creators> {\n // This could be refactored when TS releases the version with this fix:\n // https://github.com/microsoft/TypeScript/pull/41544\n const reducer = args.pop() as OnReducer<any, Creators>;\n const types = (((args as unknown) as Creators).map(\n (creator) => creator.type\n ) as unknown) as ExtractActionTypes<Creators>;\n return { reducer, types };\n}\n\n/**\n * @description\n * Creates a reducer function to handle state transitions.\n *\n * Reducer creators reduce the explicitness of reducer functions with switch statements.\n *\n * @param initialState Provides a state value if the current state is `undefined`, as it is initially.\n * @param ons Associations between actions and state changes.\n * @returns A reducer function.\n *\n * @usageNotes\n *\n * - Must be used with `ActionCreator`'s (returned by `createAction`). Cannot be used with class-based action creators.\n * - The returned `ActionReducer` should additionally be wrapped with another function, if you are using View Engine AOT.\n * In case you are using Ivy (or only JIT View Engine) the extra wrapper function is not required.\n *\n * **Declaring a reducer creator**\n *\n * ```ts\n * export const reducer = createReducer(\n * initialState,\n * on(\n * featureActions.actionOne,\n * featureActions.actionTwo,\n * (state, { updatedValue }) => ({ ...state, prop: updatedValue })\n * ),\n * on(featureActions.actionThree, () => initialState);\n * );\n * ```\n *\n * **Declaring a reducer creator using a wrapper function (Only needed if using View Engine AOT)**\n *\n * ```ts\n * const featureReducer = createReducer(\n * initialState,\n * on(\n * featureActions.actionOne,\n * featureActions.actionTwo,\n * (state, { updatedValue }) => ({ ...state, prop: updatedValue })\n * ),\n * on(featureActions.actionThree, () => initialState);\n * );\n *\n * export function reducer(state: State | undefined, action: Action) {\n * return featureReducer(state, action);\n * }\n * ```\n */\nexport function createReducer<S, A extends Action = Action>(\n initialState: S,\n ...ons: ReducerTypes<S, readonly ActionCreator[]>[]\n): ActionReducer<S, A> {\n const map = new Map<string, OnReducer<S, ActionCreator[]>>();\n for (const on of ons) {\n for (const type of on.types) {\n const existingReducer = map.get(type);\n if (existingReducer) {\n const newReducer: typeof existingReducer = (state, action) =>\n on.reducer(existingReducer(state, action), action);\n map.set(type, newReducer);\n } else {\n map.set(type, on.reducer);\n }\n }\n }\n\n return function (state: S = initialState, action: A): S {\n const reducer = map.get(action.type);\n return reducer ? reducer(state, action) : state;\n };\n}\n","/**\n * DO NOT EDIT\n *\n * This file is automatically generated at build\n */\n\nexport * from './public_api';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n\nexport {ACTIONS_SUBJECT_PROVIDERS as ɵc} from './src/actions_subject';\nexport {StoreFeature as ɵa} from './src/models';\nexport {REDUCER_MANAGER_PROVIDERS as ɵd} from './src/reducer_manager';\nexport {_actionTypeUniquenessCheck as ɵbg,_runtimeChecksFactory as ɵbf,checkForActionTypeUniqueness as ɵbe,createActiveRuntimeChecks as ɵz,createImmutabilityCheckMetaReducer as ɵbb,createInNgZoneCheckMetaReducer as ɵbc,createSerializationCheckMetaReducer as ɵba,provideRuntimeChecks as ɵbd} from './src/runtime_checks';\nexport {SCANNED_ACTIONS_SUBJECT_PROVIDERS as ɵe} from './src/scanned_actions_subject';\nexport {isEqualCheck as ɵf} from './src/selector';\nexport {STATE_PROVIDERS as ɵg} from './src/state';\nexport {STORE_PROVIDERS as ɵb} from './src/store';\nexport {_concatMetaReducers as ɵx,_createFeatureReducers as ɵv,_createFeatureStore as ɵu,_createStoreReducers as ɵt,_initialStateFactory as ɵw,_provideForRootGuard as ɵy} from './src/store_module';\nexport {_ACTION_TYPE_UNIQUENESS_CHECK as ɵs,_FEATURE_CONFIGS as ɵn,_FEATURE_REDUCERS as ɵm,_FEATURE_REDUCERS_TOKEN as ɵp,_INITIAL_REDUCERS as ɵk,_INITIAL_STATE as ɵi,_REDUCER_FACTORY as ɵj,_RESOLVED_META_REDUCERS as ɵq,_ROOT_STORE_GUARD as ɵh,_STORE_FEATURES as ɵo,_STORE_REDUCERS as ɵl,_USER_RUNTIME_CHECKS as ɵr} from './src/tokens';"],"names":[],"mappings":"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"}
\No newline at end of file