UNPKG

132 kBSource Map (JSON)View Raw
1{"version":3,"file":"ngrx-store.mjs","sources":["../../../../modules/store/src/globals.ts","../../../../modules/store/src/action_creator.ts","../../../../modules/store/src/helpers.ts","../../../../modules/store/src/action_group_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/meta-reducers/utils.ts","../../../../modules/store/src/flags.ts","../../../../modules/store/src/selector.ts","../../../../modules/store/src/feature_creator.ts","../../../../modules/store/src/store_config.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/provide_store.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 NotAllowedInPropsCheck,\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<\n P extends SafeProps,\n SafeProps = NotAllowedInPropsCheck<P>\n>(): ActionCreatorProps<P> {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\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 }) as ActionCreator<T>;\n}\n","export function capitalize<T extends string>(text: T): Capitalize<T> {\n return (text.charAt(0).toUpperCase() + text.substring(1)) as Capitalize<T>;\n}\n","import { createAction, props } from './action_creator';\nimport { ActionCreatorProps, Creator } from './models';\nimport { capitalize } from './helpers';\nimport {\n ActionGroup,\n ActionGroupConfig,\n ActionName,\n} from './action_group_creator_models';\n\n/**\n * @description\n * A function that creates a group of action creators with the same source.\n *\n * @param config An object that contains a source and dictionary of events.\n * An event is a key-value pair of an event name and event props.\n * @returns A dictionary of action creators.\n * The name of each action creator is created by camel casing the event name.\n * The type of each action is created using the \"[Source] Event Name\" pattern.\n *\n * @usageNotes\n *\n * ```ts\n * const authApiActions = createActionGroup({\n * source: 'Auth API',\n * events: {\n * // defining events with payload using the `props` function\n * 'Login Success': props<{ userId: number; token: string }>(),\n * 'Login Failure': props<{ error: string }>(),\n *\n * // defining an event without payload using the `emptyProps` function\n * 'Logout Success': emptyProps(),\n *\n * // defining an event with payload using the props factory\n * 'Logout Failure': (error: Error) => ({ error }),\n * },\n * });\n *\n * // action type: \"[Auth API] Login Success\"\n * authApiActions.loginSuccess({ userId: 10, token: 'ngrx' });\n *\n * // action type: \"[Auth API] Login Failure\"\n * authApiActions.loginFailure({ error: 'Login Failure!' });\n *\n * // action type: \"[Auth API] Logout Success\"\n * authApiActions.logoutSuccess();\n *\n * // action type: \"[Auth API] Logout Failure\";\n * authApiActions.logoutFailure(new Error('Logout Failure!'));\n * ```\n */\nexport function createActionGroup<\n Source extends string,\n Events extends Record<string, ActionCreatorProps<unknown> | Creator>\n>(config: ActionGroupConfig<Source, Events>): ActionGroup<Source, Events> {\n const { source, events } = config;\n\n return Object.keys(events).reduce(\n (actionGroup, eventName) => ({\n ...actionGroup,\n [toActionName(eventName)]: createAction(\n toActionType(source, eventName),\n events[eventName]\n ),\n }),\n {} as ActionGroup<Source, Events>\n );\n}\n\nexport function emptyProps(): ActionCreatorProps<void> {\n return props();\n}\n\nfunction toActionName<EventName extends string>(\n eventName: EventName\n): ActionName<EventName> {\n return eventName\n .trim()\n .toLowerCase()\n .split(' ')\n .map((word, i) => (i === 0 ? word : capitalize(word)))\n .join('') as ActionName<EventName>;\n}\n\nfunction toActionType<Source extends string, EventName extends string>(\n source: Source,\n eventName: EventName\n): `[${Source}] ${EventName}` {\n return `[${source}] ${eventName}`;\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{\n constructor() {\n super({ type: INIT });\n }\n\n override 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 override 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\n/**\n * InjectionToken that registers the global Store.\n * Mainly used to provide a hook that can be injected\n * to ensure the root state is loaded before something\n * that depends on it.\n */\nexport const ROOT_STORE_PROVIDER = new InjectionToken<void>(\n '@ngrx/store Root Store Provider'\n);\n\n/**\n * InjectionToken that registers feature states.\n * Mainly used to provide a hook that can be injected\n * to ensure feature state is loaded before something\n * that depends on it.\n */\nexport const FEATURE_STATE_PROVIDER = new InjectionToken<void>(\n '@ngrx/store Feature State Provider'\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{\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\n extends Subject<Action>\n implements OnDestroy\n{\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<[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 as 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","// 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{\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 override 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 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\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, typeof projector>;\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, typeof projector>;\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, typeof projector>;\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, typeof projector>;\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, typeof projector>;\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, typeof projector>;\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, typeof projector>;\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, typeof projector>;\n\nexport function createSelector<\n Selectors extends Record<string, Selector<State, unknown>>,\n State = Selectors extends Record<string, Selector<infer S, unknown>>\n ? S\n : never,\n Result extends Record<string, unknown> = {\n [Key in keyof Selectors]: Selectors[Key] extends Selector<State, infer R>\n ? R\n : never;\n }\n>(selectors: Selectors): MemoizedSelector<State, Result, never>;\n\nexport function createSelector<State, Slices extends unknown[], Result>(\n ...args: [...slices: Selector<State, unknown>[], projector: unknown] &\n [\n ...slices: { [i in keyof Slices]: Selector<State, Slices[i]> },\n projector: (...s: Slices) => Result\n ]\n): MemoizedSelector<State, Result, (...s: Slices) => Result>;\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 function createSelector<State, Props, S1, Result>(\n s1: SelectorWithProps<State, Props, S1>,\n projector: (s1: S1, props: Props) => Result\n): MemoizedSelectorWithProps<State, Props, Result, typeof projector>;\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 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, typeof projector>;\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 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, typeof projector>;\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 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, typeof projector>;\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 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, typeof projector>;\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 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, typeof projector>;\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 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, typeof projector>;\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 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, typeof projector>;\n\nexport function createSelector<State, Slices extends unknown[], Result>(\n selectors: Selector<State, unknown>[] &\n [...{ [i in keyof Slices]: Selector<State, Slices[i]> }],\n projector: (...s: Slices) => Result\n): MemoizedSelector<State, Result, (...s: Slices) => Result>;\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 function createSelector<State, Props, S1, Result>(\n selectors: [SelectorWithProps<State, Props, S1>],\n projector: (s1: S1, props: Props) => Result\n): MemoizedSelectorWithProps<State, Props, Result, typeof projector>;\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 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, typeof projector>;\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 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, typeof projector>;\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 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, typeof projector>;\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 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, typeof projector>;\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 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, typeof projector>;\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 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, typeof projector>;\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 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, typeof projector>;\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 createOrderDoesNotMatterSelector = 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 */\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 } else if (args.length === 1 && isSelectorsDictionary(args[0])) {\n args = extractArgsFromSelectorsDictionary(args[0]);\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>;\n/**\n * @deprecated Feature selectors with a root state are deprecated, for more info see {@link https://github.com/ngrx/platform/issues/3179 Github Issue}\n */\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\nfunction isSelectorsDictionary(\n selectors: unknown\n): selectors is Record<string, Selector<unknown, unknown>> {\n return (\n !!selectors &&\n typeof selectors === 'object' &&\n Object.values(selectors).every((selector) => typeof selector === 'function')\n );\n}\n\nfunction extractArgsFromSelectorsDictionary(\n selectorsDictionary: Record<string, Selector<unknown, unknown>>\n): [\n ...selectors: Selector<unknown, unknown>[],\n projector: (...selectorResults: unknown[]) => unknown\n] {\n const selectors = Object.values(selectorsDictionary);\n const resultKeys = Object.keys(selectorsDictionary);\n const projector = (...selectorResults: unknown[]) =>\n resultKeys.reduce(\n (result, key, index) => ({\n ...result,\n [key]: selectorResults[index],\n }),\n {}\n );\n\n return [...selectors, projector];\n}\n","import { capitalize } from './helpers';\nimport { ActionReducer, Selector } 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 interface FeatureConfig<FeatureName extends string, FeatureState> {\n name: FeatureName;\n reducer: ActionReducer<FeatureState>;\n}\n\ntype Feature<\n AppState extends Record<string, any>,\n FeatureName extends keyof AppState & string,\n FeatureState extends AppState[FeatureName]\n> = FeatureConfig<FeatureName, FeatureState> &\n BaseSelectors<AppState, FeatureName, FeatureState>;\n\ntype FeatureWithExtraSelectors<\n FeatureName extends string,\n FeatureState,\n ExtraSelectors extends SelectorsDictionary\n> = string extends keyof ExtraSelectors\n ? Feature<Record<string, any>, FeatureName, FeatureState>\n : Omit<\n Feature<Record<string, any>, FeatureName, FeatureState>,\n keyof ExtraSelectors\n > &\n ExtraSelectors;\n\ntype BaseSelectors<\n AppState extends Record<string, any>,\n FeatureName extends keyof AppState & string,\n FeatureState extends AppState[FeatureName]\n> = FeatureSelector<AppState, FeatureName, FeatureState> &\n NestedSelectors<AppState, FeatureState>;\n\ntype SelectorsDictionary = Record<\n string,\n Selector<Record<string, any>, unknown>\n>;\n\ntype ExtraSelectorsFactory<\n FeatureName extends string,\n FeatureState,\n ExtraSelectors extends SelectorsDictionary\n> = (\n baseSelectors: BaseSelectors<Record<string, any>, FeatureName, FeatureState>\n) => ExtraSelectors;\n\ntype NotAllowedFeatureStateCheck<FeatureState> =\n FeatureState extends Required<FeatureState>\n ? unknown\n : 'optional properties are not allowed in the feature state';\n\n/**\n * Creates a feature object with extra selectors.\n *\n * @param featureConfig An object that contains a feature name, a feature\n * reducer, and extra selectors factory.\n * @returns An object that contains a feature name, a feature reducer,\n * a feature selector, a selector for each feature state property, and\n * extra selectors.\n */\nexport function createFeature<\n FeatureName extends string,\n FeatureState,\n ExtraSelectors extends SelectorsDictionary\n>(\n featureConfig: FeatureConfig<FeatureName, FeatureState> & {\n extraSelectors: ExtraSelectorsFactory<\n FeatureName,\n FeatureState,\n ExtraSelectors\n >;\n } & NotAllowedFeatureStateCheck<FeatureState>\n): FeatureWithExtraSelectors<FeatureName, FeatureState, ExtraSelectors>;\n/**\n * Creates a feature object.\n *\n * @param featureConfig An object that contains a feature name and a feature\n * reducer.\n * @returns An object that contains a feature name, a feature reducer,\n * a feature selector, and a selector for each feature state property.\n */\nexport function createFeature<FeatureName extends string, FeatureState>(\n featureConfig: FeatureConfig<FeatureName, FeatureState> &\n NotAllowedFeatureStateCheck<FeatureState>\n): Feature<Record<string, any>, FeatureName, FeatureState>;\n/**\n * @deprecated Use the `createFeature` signature without root state instead.\n * For more info see: https://github.com/ngrx/platform/issues/3737\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/**\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 * This function also provides the ability to add extra selectors to\n * the feature object.\n *\n * @param featureConfig An object that contains a feature name and a feature\n * reducer as required, and extra selectors factory as an optional argument.\n * @returns An object that contains a feature name, a feature reducer,\n * a feature selector, a selector for each feature state property, and extra\n * selectors.\n *\n * @usageNotes\n *\n * ```ts\n * interface ProductsState {\n * products: Product[];\n * selectedId: string | null;\n * }\n *\n * const initialState: ProductsState = {\n * products: [],\n * selectedId: null,\n * };\n *\n * const productsFeature = createFeature({\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 * name,\n * reducer,\n * // feature selector\n * selectProductsState, // type: MemoizedSelector<Record<string, any>, ProductsState>\n * // feature state properties selectors\n * selectProducts, // type: MemoizedSelector<Record<string, any>, Product[]>\n * selectSelectedId, // type: MemoizedSelector<Record<string, any>, string | null>\n * } = productsFeature;\n * ```\n *\n * **Creating Feature with Extra Selectors**\n *\n * ```ts\n * type CallState = 'init' | 'loading' | 'loaded' | { error: string };\n *\n * interface State extends EntityState<Product> {\n * callState: CallState;\n * }\n *\n * const adapter = createEntityAdapter<Product>();\n * const initialState: State = adapter.getInitialState({\n * callState: 'init',\n * });\n *\n * export const productsFeature = createFeature({\n * name: 'products',\n * reducer: createReducer(initialState),\n * extraSelectors: ({ selectProductsState, selectCallState }) => ({\n * ...adapter.getSelectors(selectBooksState),\n * ...getCallStateSelectors(selectCallState)\n * }),\n * });\n *\n * const {\n * name,\n * reducer,\n * // feature selector\n * selectProductsState,\n * // feature state properties selectors\n * selectIds,\n * selectEntities,\n * selectCallState,\n * // selectors returned by `adapter.getSelectors`\n * selectAll,\n * selectTotal,\n * // selectors returned by `getCallStateSelectors`\n * selectIsLoading,\n * selectIsLoaded,\n * selectError,\n * } = productsFeature;\n * ```\n */\nexport function createFeature<\n AppState extends Record<string, any>,\n FeatureName extends keyof AppState & string,\n FeatureState extends AppState[FeatureName],\n ExtraSelectors extends SelectorsDictionary\n>(\n featureConfig: FeatureConfig<FeatureName, FeatureState> & {\n extraSelectors?: ExtraSelectorsFactory<\n FeatureName,\n FeatureState,\n ExtraSelectors\n >;\n }\n): Feature<AppState, FeatureName, FeatureState> & ExtraSelectors {\n const {\n name,\n reducer,\n extraSelectors: extraSelectorsFactory,\n } = featureConfig;\n\n const featureSelector = createFeatureSelector<FeatureState>(name);\n const nestedSelectors = createNestedSelectors(featureSelector, reducer);\n const baseSelectors = {\n [`select${capitalize(name)}State`]: featureSelector,\n ...nestedSelectors,\n } as BaseSelectors<Record<string, any>, FeatureName, FeatureState>;\n const extraSelectors = extraSelectorsFactory\n ? extraSelectorsFactory(baseSelectors)\n : {};\n\n return {\n name,\n reducer,\n ...baseSelectors,\n ...extraSelectors,\n } as Feature<AppState, FeatureName, FeatureState> & ExtraSelectors;\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 = (\n isPlainObject(initialState) ? 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 { inject, InjectionToken } 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 } from './utils';\nimport { Store } from './store';\n\nexport interface StoreConfig<T, V extends Action = Action> {\n initialState?: InitialState<T>;\n reducerFactory?: ActionReducerFactory<T, V>;\n metaReducers?: MetaReducer<{ [P in keyof T]: T[P] }, 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\nexport function _createStoreReducers<T, V extends Action = Action>(\n reducers: ActionReducerMap<T, V> | InjectionToken<ActionReducerMap<T, V>>\n): ActionReducerMap<T, V> {\n return reducers instanceof InjectionToken ? inject(reducers) : reducers;\n}\n\nexport function _createFeatureStore<T, V extends Action = Action>(\n configs: StoreConfig<T, V>[] | InjectionToken<StoreConfig<T, V>>[],\n featureStores: StoreFeature<T, V>[]\n) {\n return featureStores.map((feat, index) => {\n if (configs[index] instanceof InjectionToken) {\n const conf = inject(configs[index] as InjectionToken<StoreConfig<T, V>>);\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<T, V extends Action = Action>(\n reducerCollection: Array<\n ActionReducerMap<T, V> | InjectionToken<ActionReducerMap<T, V>>\n >\n): ActionReducerMap<T, V>[] {\n return reducerCollection.map((reducer) => {\n return reducer instanceof InjectionToken ? inject(reducer) : reducer;\n });\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(): unknown {\n const store = inject(Store, { optional: true, skipSelf: true });\n if (store) {\n throw new TypeError(\n `The root Store has been provided more than once. Feature modules should provide feature states instead.`\n );\n }\n return 'guarded';\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 ENVIRONMENT_INITIALIZER,\n EnvironmentProviders,\n Inject,\n inject,\n InjectionToken,\n makeEnvironmentProviders,\n Provider,\n} from '@angular/core';\nimport {\n Action,\n ActionReducer,\n ActionReducerMap,\n StoreFeature,\n} from './models';\nimport { combineReducers, createReducerFactory } from './utils';\nimport {\n _ACTION_TYPE_UNIQUENESS_CHECK,\n _FEATURE_CONFIGS,\n _FEATURE_REDUCERS,\n _FEATURE_REDUCERS_TOKEN,\n _INITIAL_REDUCERS,\n _INITIAL_STATE,\n _REDUCER_FACTORY,\n _RESOLVED_META_REDUCERS,\n _ROOT_STORE_GUARD,\n _STORE_FEATURES,\n _STORE_REDUCERS,\n FEATURE_REDUCERS,\n FEATURE_STATE_PROVIDER,\n INITIAL_REDUCERS,\n INITIAL_STATE,\n META_REDUCERS,\n REDUCER_FACTORY,\n ROOT_STORE_PROVIDER,\n STORE_FEATURES,\n USER_PROVIDED_META_REDUCERS,\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, STORE_PROVIDERS } from './store';\nimport {\n checkForActionTypeUniqueness,\n provideRuntimeChecks,\n} from './runtime_checks';\nimport {\n _concatMetaReducers,\n _createFeatureReducers,\n _createFeatureStore,\n _createStoreReducers,\n _initialStateFactory,\n _provideForRootGuard,\n FeatureSlice,\n RootStoreConfig,\n StoreConfig,\n} from './store_config';\n\nexport function provideState<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): EnvironmentProviders;\nexport function provideState<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): EnvironmentProviders;\nexport function provideState<T, V extends Action = Action>(\n slice: FeatureSlice<T, V>\n): EnvironmentProviders;\n/**\n * Provides additional slices of state in the Store.\n * These providers cannot be used at the component level.\n *\n * @usageNotes\n *\n * ### Providing Store Features\n *\n * ```ts\n * const booksRoutes: Route[] = [\n * {\n * path: '',\n * providers: [provideState('books', booksReducer)],\n * children: [\n * { path: '', component: BookListComponent },\n * { path: ':id', component: BookDetailsComponent },\n * ],\n * },\n * ];\n * ```\n */\nexport function provideState<T, V extends Action = Action>(\n featureNameOrSlice: string | FeatureSlice<T, V>,\n reducers?:\n | ActionReducerMap<T, V>\n | InjectionToken<ActionReducerMap<T, V>>\n | ActionReducer<T, V>\n | InjectionToken<ActionReducer<T, V>>,\n config: StoreConfig<T, V> | InjectionToken<StoreConfig<T, V>> = {}\n): EnvironmentProviders {\n return makeEnvironmentProviders([\n ..._provideState(featureNameOrSlice, reducers, config),\n ENVIRONMENT_STATE_PROVIDER,\n ]);\n}\n\nexport function _provideStore<T, V extends Action = Action>(\n reducers:\n | ActionReducerMap<T, V>\n | InjectionToken<ActionReducerMap<T, V>>\n | Record<string, never> = {},\n config: RootStoreConfig<T, V> = {}\n): Provider[] {\n return [\n {\n provide: _ROOT_STORE_GUARD,\n useFactory: _provideForRootGuard,\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: [_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 ? config.reducerFactory : 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\nfunction rootStoreProviderFactory(): void {\n inject(ActionsSubject);\n inject(ReducerObservable);\n inject(ScannedActionsSubject);\n inject(Store);\n inject(_ROOT_STORE_GUARD, { optional: true });\n inject(_ACTION_TYPE_UNIQUENESS_CHECK, { optional: true });\n}\n\n/**\n * Environment Initializer used in the root\n * providers to initialize the Store\n */\nconst ENVIRONMENT_STORE_PROVIDER: Provider[] = [\n { provide: ROOT_STORE_PROVIDER, useFactory: rootStoreProviderFactory },\n {\n provide: ENVIRONMENT_INITIALIZER,\n multi: true,\n useFactory() {\n return () => inject(ROOT_STORE_PROVIDER);\n },\n },\n];\n\n/**\n * Provides the global Store providers and initializes\n * the Store.\n * These providers cannot be used at the component level.\n *\n * @usageNotes\n *\n * ### Providing the Global Store\n *\n * ```ts\n * bootstrapApplication(AppComponent, {\n * providers: [provideStore()],\n * });\n * ```\n */\nexport function provideStore<T, V extends Action = Action>(\n reducers?: ActionReducerMap<T, V> | InjectionToken<ActionReducerMap<T, V>>,\n config?: RootStoreConfig<T, V>\n): EnvironmentProviders {\n return makeEnvironmentProviders([\n ..._provideStore(reducers, config),\n ENVIRONMENT_STORE_PROVIDER,\n ]);\n}\n\nfunction featureStateProviderFactory(): void {\n inject(ROOT_STORE_PROVIDER);\n const features = inject<StoreFeature<any, any>[]>(_STORE_FEATURES);\n const featureReducers = inject<ActionReducerMap<any>[]>(FEATURE_REDUCERS);\n const reducerManager = inject(ReducerManager);\n inject(_ACTION_TYPE_UNIQUENESS_CHECK, { optional: true });\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/**\n * Environment Initializer used in the feature\n * providers to register state features\n */\nconst ENVIRONMENT_STATE_PROVIDER: Provider[] = [\n {\n provide: FEATURE_STATE_PROVIDER,\n useFactory: featureStateProviderFactory,\n },\n {\n provide: ENVIRONMENT_INITIALIZER,\n multi: true,\n useFactory() {\n return () => inject(FEATURE_STATE_PROVIDER);\n },\n },\n];\n\nexport function _provideState<T, V extends Action = Action>(\n featureNameOrSlice: string | FeatureSlice<T, V>,\n reducers?:\n | ActionReducerMap<T, V>\n | InjectionToken<ActionReducerMap<T, V>>\n | ActionReducer<T, V>\n | InjectionToken<ActionReducer<T, V>>,\n config: StoreConfig<T, V> | InjectionToken<StoreConfig<T, V>> = {}\n): Provider[] {\n return [\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: [_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 : reducers,\n },\n {\n provide: _FEATURE_REDUCERS_TOKEN,\n multi: true,\n useExisting:\n reducers instanceof InjectionToken ? reducers : _FEATURE_REDUCERS,\n },\n {\n provide: FEATURE_REDUCERS,\n multi: true,\n deps: [_FEATURE_REDUCERS, [new Inject(_FEATURE_REDUCERS_TOKEN)]],\n useFactory: _createFeatureReducers,\n },\n checkForActionTypeUniqueness(),\n ];\n}\n","import {\n Inject,\n InjectionToken,\n ModuleWithProviders,\n NgModule,\n OnDestroy,\n Optional,\n} from '@angular/core';\nimport {\n Action,\n ActionReducer,\n ActionReducerMap,\n StoreFeature,\n} from './models';\nimport {\n _ACTION_TYPE_UNIQUENESS_CHECK,\n _ROOT_STORE_GUARD,\n _STORE_FEATURES,\n FEATURE_REDUCERS,\n} from './tokens';\nimport { ActionsSubject } from './actions_subject';\nimport { ReducerManager, ReducerObservable } from './reducer_manager';\nimport { ScannedActionsSubject } from './scanned_actions_subject';\nimport { Store } from './store';\nimport {\n _initialStateFactory,\n FeatureSlice,\n RootStoreConfig,\n StoreConfig,\n} from './store_config';\nimport { _provideState, _provideStore } from './provide_store';\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\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 return {\n ngModule: StoreRootModule,\n providers: [..._provideStore(reducers, config)],\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 ): ModuleWithProviders<StoreFeatureModule>;\n static forFeature<T, V extends Action = Action>(\n featureNameOrSlice: string | FeatureSlice<T, V>,\n reducers?:\n | ActionReducerMap<T, V>\n | InjectionToken<ActionReducerMap<T, V>>\n | ActionReducer<T, V>\n | InjectionToken<ActionReducer<T, V>>,\n config: StoreConfig<T, V> | InjectionToken<StoreConfig<T, V>> = {}\n ): ModuleWithProviders<StoreFeatureModule> {\n return {\n ngModule: StoreFeatureModule,\n providers: [..._provideState(featureNameOrSlice, reducers, config)],\n };\n }\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/**\n * Specialized Reducer that is aware of the Action type it needs to handle\n */\nexport interface OnReducer<\n // State type that is being passed from consumer of `on` fn, e.g. from `createReducer` factory\n State,\n Creators extends readonly ActionCreator[],\n // Inferred type from within OnReducer function if `State` is unknown\n InferredState = State,\n // Resulting state would be either a State or if State is unknown then the inferred state from the function itself\n ResultState = unknown extends State ? InferredState : State\n> {\n (\n // if State is unknown then set the InferredState type\n state: unknown extends State ? InferredState : State,\n action: ActionType<Creators[number]>\n ): ResultState;\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<\n // State type that is being passed from `createReducer` when created within that factory function\n State,\n // Action creators\n Creators extends readonly ActionCreator[],\n // Inferred type from within OnReducer function if `State` is unknown. This is typically the case when `on` function\n // is created outside of `createReducer` and state type is either explicitly set OR inferred by return type.\n // For example: `const onFn = on(action, (state: State, {prop}) => ({ ...state, name: prop }));`\n InferredState = State\n>(\n ...args: [\n ...creators: Creators,\n reducer: OnReducer<\n State extends infer S ? S : never,\n Creators,\n InferredState\n >\n ]\n): ReducerTypes<unknown extends State ? InferredState : State, Creators> {\n const reducer = args.pop() as unknown as OnReducer<\n unknown extends State ? InferredState : State,\n Creators\n >;\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` does not require being wrapped with another function.\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 */\nexport function createReducer<\n S,\n A extends Action = Action,\n // Additional generic for the return type is introduced to enable correct\n // type inference when `createReducer` is used within `createFeature`.\n // For more info see: https://github.com/microsoft/TypeScript/issues/52114\n R extends ActionReducer<S, A> = ActionReducer<S, A>\n>(initialState: S, ...ons: ReducerTypes<S, readonly ActionCreator[]>[]): R {\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 } as R;\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"],"names":["i1.StateObservable","i2.ActionsSubject","i3.ReducerManager","ngCore","i1.ActionsSubject","i2.ReducerObservable","i3.ScannedActionsSubject","i4.Store"],"mappings":"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"}
\No newline at end of file