{"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  Action,\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\n/**\n * @description\n * Creates a configured `Creator` function that, when called, returns an object in the shape of the\n * `Action` interface with no additional metadata.\n *\n * @param type Describes the action that will be dispatched\n *\n * @usageNotes\n *\n * Declaring an action creator:\n *\n * ```ts\n * export const increment = createAction('[Counter] Increment');\n * ```\n *\n * Dispatching an action:\n *\n * ```ts\n * store.dispatch(increment());\n * ```\n *\n * Referencing the action in a reducer:\n *\n * ```ts\n * on(CounterActions.increment, (state) => ({ ...state, count: state.count + 1 }))\n * ```\n *\n * Referencing the action in an effect:\n * ```ts\n * effectName$ = createEffect(\n *   () => this.actions$.pipe(\n *     ofType(CounterActions.increment),\n *     // ...\n *   )\n * );\n * ```\n */\nexport function createAction<T extends string>(\n  type: T\n): ActionCreator<T, () => Action<T>>;\n/**\n * @description\n * Creates a configured `Creator` function that, when called, returns an object in the shape of the\n * `Action` interface with metadata provided by the `props` or `emptyProps` functions.\n *\n * @param type Describes the action that will be dispatched\n *\n * @usageNotes\n *\n * Declaring an action creator:\n *\n * ```ts\n * export const loginSuccess = createAction(\n *   '[Auth/API] Login Success',\n *   props<{ user: User }>()\n * );\n * ```\n *\n * Dispatching an action:\n *\n * ```ts\n * store.dispatch(loginSuccess({ user: newUser }));\n * ```\n *\n * Referencing the action in a reducer:\n *\n * ```ts\n * on(AuthApiActions.loginSuccess, (state, { user }) => ({ ...state, user }))\n * ```\n *\n * Referencing the 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, P extends object>(\n  type: T,\n  config: ActionCreatorProps<P> & NotAllowedCheck<P>\n): ActionCreator<T, (props: P & NotAllowedCheck<P>) => P & Action<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 & Action<T>> & Action<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\nexport function uncapitalize<T extends string>(text: T): Uncapitalize<T> {\n  return (text.charAt(0).toLowerCase() + text.substring(1)) as Uncapitalize<T>;\n}\n\nexport function assertDefined<T>(\n  value: T | null | undefined,\n  name: string\n): asserts value is T {\n  if (value === null || value === undefined) {\n    throw new Error(`${name} must be defined.`);\n  }\n}\n","import { createAction, props } from './action_creator';\nimport {\n  ActionCreator,\n  ActionCreatorProps,\n  Creator,\n  FunctionWithParametersType,\n  NotAllowedCheck,\n  Action,\n} from './models';\nimport { capitalize, uncapitalize } from './helpers';\n\ntype Join<\n  Str extends string,\n  Separator extends string = ' ',\n> = Str extends `${infer First}${Separator}${infer Rest}`\n  ? Join<`${First}${Rest}`, Separator>\n  : Str;\n\ntype CapitalizeWords<Str extends string> =\n  Str extends `${infer First} ${infer Rest}`\n    ? `${Capitalize<First>} ${CapitalizeWords<Rest>}`\n    : Capitalize<Str>;\n\ntype StringLiteralCheck<\n  Str extends string,\n  Name extends string,\n> = string extends Str ? `${Name} must be a string literal type` : unknown;\n\ntype UniqueEventNameCheck<EventNames extends string, EventName extends string> =\n  ActionName<EventName> extends ActionName<Exclude<EventNames, EventName>>\n    ? `${ActionName<EventName>} action is already defined`\n    : unknown;\n\ntype NotAllowedEventPropsCheck<\n  PropsCreator extends ActionCreatorProps<unknown> | Creator,\n> =\n  PropsCreator extends ActionCreatorProps<infer Props>\n    ? Props extends void\n      ? unknown\n      : NotAllowedCheck<Props & object>\n    : PropsCreator extends Creator<any, infer Result>\n      ? NotAllowedCheck<Result>\n      : unknown;\n\ntype EventCreator<\n  PropsCreator extends ActionCreatorProps<unknown> | Creator,\n  Type extends string,\n> =\n  PropsCreator extends ActionCreatorProps<infer Props>\n    ? void extends Props\n      ? ActionCreator<Type, () => Action<Type>>\n      : ActionCreator<\n          Type,\n          (\n            props: Props & NotAllowedCheck<Props & object>\n          ) => Props & Action<Type>\n        >\n    : PropsCreator extends Creator<infer Props, infer Result>\n      ? FunctionWithParametersType<\n          Props,\n          Result & NotAllowedCheck<Result> & Action<Type>\n        > &\n          Action<Type>\n      : never;\n\ntype ActionName<EventName extends string> = Uncapitalize<\n  Join<CapitalizeWords<EventName>>\n>;\n\ninterface ActionGroupConfig<\n  Source extends string,\n  Events extends Record<string, ActionCreatorProps<unknown> | Creator>,\n> {\n  source: Source & StringLiteralCheck<Source, 'source'>;\n  events: Events & {\n    [EventName in keyof Events]: StringLiteralCheck<\n      EventName & string,\n      'event name'\n    > &\n      UniqueEventNameCheck<keyof Events & string, EventName & string> &\n      NotAllowedEventPropsCheck<Events[EventName]>;\n  };\n}\n\ntype ActionGroup<\n  Source extends string,\n  Events extends Record<string, ActionCreatorProps<unknown> | Creator>,\n> = {\n  [EventName in keyof Events as ActionName<EventName & string>]: EventCreator<\n    Events[EventName],\n    `[${Source}] ${EventName & string}`\n  >;\n};\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 as any)[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    .split(' ')\n    .map((word, i) => (i === 0 ? uncapitalize(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, Signal } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\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   * @internal\n   */\n  abstract readonly state: Signal<any>;\n}\n\n@Injectable()\nexport class State<T> extends BehaviorSubject<any> implements OnDestroy {\n  static readonly INIT = INIT;\n\n  private stateSubscription: Subscription;\n\n  /**\n   * @internal\n   */\n  public state: Signal<T>;\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    this.state = toSignal(this, { manualCleanup: true, requireSync: true });\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 {\n  computed,\n  effect,\n  EffectRef,\n  inject,\n  Injectable,\n  Injector,\n  Provider,\n  Signal,\n  untracked,\n} from '@angular/core';\nimport { Observable, Observer, Operator } from 'rxjs';\nimport { distinctUntilChanged, map, pluck } from 'rxjs/operators';\n\nimport { ActionsSubject } from './actions_subject';\nimport {\n  Action,\n  ActionReducer,\n  CreatorsNotAllowedCheck,\n  SelectSignalOptions,\n} from './models';\nimport { ReducerManager } from './reducer_manager';\nimport { StateObservable } from './state';\nimport { assertDefined } from './helpers';\n\n@Injectable()\n/**\n * @description\n * Store is an injectable service that provides reactive state management and a public API for dispatching actions.\n *\n * @usageNotes\n *\n * In a component:\n *\n * ```ts\n * import { Component, inject } from '@angular/core';\n * import { Store } from '@ngrx/store';\n *\n * @Component({\n *  selector: 'app-my-component',\n *  template: `\n *    <div>{{ count() }}</div>\n *    <button (click)=\"increment()\">Increment</button>\n *  `\n * })\n * export class MyComponent {\n *   private store = inject(Store);\n *\n *   count = this.store.selectSignal(state => state.count);\n *\n *   increment() {\n *     this.store.dispatch({ type: 'INCREMENT' });\n *   }\n * }\n * ```\n *\n */\nexport class Store<T = object>\n  extends Observable<T>\n  implements Observer<Action>\n{\n  /**\n   * @internal\n   */\n  readonly state: Signal<T>;\n\n  constructor(\n    state$: StateObservable,\n    private actionsObserver: ActionsSubject,\n    private reducerManager: ReducerManager,\n    private injector?: Injector\n  ) {\n    super();\n\n    this.source = state$;\n    this.state = state$.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  /**\n   * @deprecated Selectors with props are deprecated, for more info see {@link https://github.com/ngrx/platform/issues/2980 Github Issue}\n   */\n  select<a extends keyof T>(key: a): Observable<T[a]>;\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<a extends keyof T, b extends keyof T[a]>(\n    key1: a,\n    key2: b\n  ): Observable<T[a][b]>;\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<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  /**\n   * @deprecated Selectors with props are deprecated, for more info see {@link https://github.com/ngrx/platform/issues/2980 Github Issue}\n   */\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  /**\n   * @deprecated Selectors with props are deprecated, for more info see {@link https://github.com/ngrx/platform/issues/2980 Github Issue}\n   */\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  /**\n   * @deprecated Selectors with props are deprecated, for more info see {@link https://github.com/ngrx/platform/issues/2980 Github Issue}\n   */\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  /**\n   * @deprecated Selectors with props are deprecated, for more info see {@link https://github.com/ngrx/platform/issues/2980 Github Issue}\n   */\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  /**\n   * @deprecated Selectors with props are deprecated, for more info see {@link https://github.com/ngrx/platform/issues/2980 Github Issue}\n   */\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  /**\n   * Returns a signal of the provided selector.\n   *\n   * @param selector selector function\n   * @param options select signal options\n   * @returns Signal of the state selected by the provided selector\n   * @usageNotes\n   *\n   * ```ts\n   * const count = this.store.selectSignal(state => state.count);\n   * ```\n   *\n   * Or with a selector created by @ngrx/store!createSelector:function\n   *\n   * ```ts\n   * const selectCount = createSelector(\n   *  (state: State) => state.count,\n   * );\n   *\n   * const count = this.store.selectSignal(selectCount);\n   * ```\n   */\n  selectSignal<K>(\n    selector: (state: T) => K,\n    options?: SelectSignalOptions<K>\n  ): Signal<K> {\n    return computed(() => selector(this.state()), options);\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: V & CreatorsNotAllowedCheck<V>): void;\n  dispatch<V extends () => Action>(\n    dispatchFn: V & CreatorsNotAllowedCheck<V>,\n    config?: {\n      injector: Injector;\n    }\n  ): EffectRef;\n  dispatch<V extends Action | (() => Action)>(\n    actionOrDispatchFn: V,\n    config?: { injector?: Injector }\n  ): EffectRef | void {\n    if (typeof actionOrDispatchFn === 'function') {\n      return this.processDispatchFn(actionOrDispatchFn, config);\n    }\n    this.actionsObserver.next(actionOrDispatchFn);\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  private processDispatchFn(\n    dispatchFn: () => Action,\n    config?: { injector?: Injector }\n  ) {\n    assertDefined(this.injector, 'Store Injector');\n    const effectInjector =\n      config?.injector ?? getCallerInjector() ?? this.injector;\n\n    return effect(\n      () => {\n        const action = dispatchFn();\n        untracked(() => this.dispatch(action));\n      },\n      { injector: effectInjector }\n    );\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\nfunction getCallerInjector() {\n  try {\n    return inject(Injector);\n  } catch (_) {\n    return undefined;\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 the {@link https://ngrx.io/guide/migration/v12#ngrxstore migration guide}\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, Prettify, Primitive, Selector } from './models';\nimport { isPlainObject } from './meta-reducers/utils';\nimport {\n  createFeatureSelector,\n  createSelector,\n  MemoizedSelector,\n} from './selector';\n\nexport interface FeatureConfig<FeatureName extends string, FeatureState> {\n  name: FeatureName;\n  reducer: ActionReducer<FeatureState>;\n}\n\ntype Feature<FeatureName extends string, FeatureState> = FeatureConfig<\n  FeatureName,\n  FeatureState\n> &\n  BaseSelectors<FeatureName, FeatureState>;\n\ntype FeatureWithExtraSelectors<\n  FeatureName extends string,\n  FeatureState,\n  ExtraSelectors extends SelectorsDictionary,\n> = string extends keyof ExtraSelectors\n  ? Feature<FeatureName, FeatureState>\n  : Omit<Feature<FeatureName, FeatureState>, keyof ExtraSelectors> &\n      ExtraSelectors;\n\ntype FeatureSelector<FeatureName extends string, FeatureState> = {\n  [K in FeatureName as `select${Capitalize<K>}State`]: MemoizedSelector<\n    Record<string, any>,\n    FeatureState,\n    (featureState: FeatureState) => FeatureState\n  >;\n};\n\ntype NestedSelectors<FeatureState> = FeatureState extends\n  | Primitive\n  | unknown[]\n  | Date\n  ? {}\n  : {\n      [K in keyof FeatureState &\n        string as `select${Capitalize<K>}`]: MemoizedSelector<\n        Record<string, any>,\n        FeatureState[K],\n        (featureState: FeatureState) => FeatureState[K]\n      >;\n    };\n\ntype BaseSelectors<FeatureName extends string, FeatureState> = FeatureSelector<\n  FeatureName,\n  FeatureState\n> &\n  NestedSelectors<FeatureState>;\n\ntype SelectorsDictionary = Record<\n  string,\n  | Selector<Record<string, any>, unknown>\n  | ((...args: any[]) => Selector<Record<string, any>, unknown>)\n>;\n\ntype ExtraSelectorsFactory<\n  FeatureName extends string,\n  FeatureState,\n  ExtraSelectors extends SelectorsDictionary,\n> = (baseSelectors: BaseSelectors<FeatureName, FeatureState>) => 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): Prettify<\n  FeatureWithExtraSelectors<FeatureName, FeatureState, ExtraSelectors>\n>;\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): Prettify<Feature<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(selectProductsState),\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  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  }\n): Feature<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<FeatureName, FeatureState>;\n  const extraSelectors = extraSelectorsFactory\n    ? extraSelectorsFactory(baseSelectors)\n    : {};\n\n  return {\n    name,\n    reducer,\n    ...baseSelectors,\n    ...extraSelectors,\n  } as Feature<FeatureName, FeatureState> & ExtraSelectors;\n}\n\nfunction createNestedSelectors<FeatureState>(\n  featureSelector: MemoizedSelector<Record<string, any>, FeatureState>,\n  reducer: ActionReducer<FeatureState>\n): NestedSelectors<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<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  EnvironmentProviders,\n  Inject,\n  inject,\n  InjectionToken,\n  makeEnvironmentProviders,\n  provideEnvironmentInitializer,\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: Array<Provider | EnvironmentProviders> = [\n  { provide: ROOT_STORE_PROVIDER, useFactory: rootStoreProviderFactory },\n  provideEnvironmentInitializer(() => inject(ROOT_STORE_PROVIDER)),\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: Array<Provider | EnvironmentProviders> = [\n  {\n    provide: FEATURE_STATE_PROVIDER,\n    useFactory: featureStateProviderFactory,\n  },\n  provideEnvironmentInitializer(() => inject(FEATURE_STATE_PROVIDER)),\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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"}