{"version":3,"file":"mini-rx-signal-store.mjs","sources":["../../../../libs/signal-store/src/lib/signal-selector.ts","../../../../libs/signal-store/src/lib/create-selectable-signal.ts","../../../../libs/signal-store/src/lib/store-core.ts","../../../../libs/signal-store/src/lib/store.ts","../../../../libs/signal-store/src/lib/mini-rx-to-observable.ts","../../../../libs/signal-store/src/lib/signal-store-sub-sink.ts","../../../../libs/signal-store/src/lib/create-rx-effect-fn.ts","../../../../libs/signal-store/src/lib/create-connect-fn.ts","../../../../libs/signal-store/src/lib/feature-store.ts","../../../../libs/signal-store/src/lib/component-store.ts","../../../../libs/signal-store/src/lib/extensions/redux-devtools.extension.ts","../../../../libs/signal-store/src/lib/injection-tokens.ts","../../../../libs/signal-store/src/lib/modules/store.module.ts","../../../../libs/signal-store/src/lib/effects-mapper.ts","../../../../libs/signal-store/src/lib/modules/effects.module.ts","../../../../libs/signal-store/src/lib/modules/component-store.module.ts","../../../../libs/signal-store/src/lib/providers.ts","../../../../libs/signal-store/src/index.ts","../../../../libs/signal-store/src/mini-rx-signal-store.ts"],"sourcesContent":["// Credits go to NgRx\n// Typings are taken directly from NgRx with small modifications:\n// https://github.com/ngrx/platform/blob/8.6.0/modules/store/src/selector.ts\n\n// The MIT License (MIT)\n//\n// Copyright (c) 2017 Brandon Roberts, Mike Ryan, Victor Savkin, Rob Wormald\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n// SOFTWARE.\n\nimport { computed, Signal } from '@angular/core';\nimport { AppState } from '@mini-rx/common';\n\nexport const SIGNAL_SELECTOR_KEY = '@mini-rx/signalSelector';\n\nexport interface HasSignalSelectorKey {\n    [SIGNAL_SELECTOR_KEY]: true;\n}\n\ntype Selector<T, R> = (state: Signal<T>) => Signal<R>;\nexport type SignalSelector<T, R> = Selector<T, R> & HasSignalSelectorKey;\n\nexport function createSelector<State, S1, Result>(\n    s1: SignalSelector<State, S1>,\n    projector: (s1: S1) => Result\n): SignalSelector<State, Result>;\n\nexport function createSelector<State, S1, S2, Result>(\n    s1: SignalSelector<State, S1>,\n    s2: SignalSelector<State, S2>,\n    projector: (s1: S1, s2: S2) => Result\n): SignalSelector<State, Result>;\n\nexport function createSelector<State, S1, S2, S3, Result>(\n    s1: SignalSelector<State, S1>,\n    s2: SignalSelector<State, S2>,\n    s3: SignalSelector<State, S3>,\n    projector: (s1: S1, s2: S2, s3: S3) => Result\n): SignalSelector<State, Result>;\n\nexport function createSelector<State, S1, S2, S3, S4, Result>(\n    s1: SignalSelector<State, S1>,\n    s2: SignalSelector<State, S2>,\n    s3: SignalSelector<State, S3>,\n    s4: SignalSelector<State, S4>,\n    projector: (s1: S1, s2: S2, s3: S3, s4: S4) => Result\n): SignalSelector<State, Result>;\n\nexport function createSelector<State, S1, S2, S3, S4, S5, Result>(\n    s1: SignalSelector<State, S1>,\n    s2: SignalSelector<State, S2>,\n    s3: SignalSelector<State, S3>,\n    s4: SignalSelector<State, S4>,\n    s5: SignalSelector<State, S5>,\n    projector: (s1: S1, s2: S2, s3: S3, s4: S4, s5: S5) => Result\n): SignalSelector<State, Result>;\n\nexport function createSelector<State, S1, S2, S3, S4, S5, S6, Result>(\n    s1: SignalSelector<State, S1>,\n    s2: SignalSelector<State, S2>,\n    s3: SignalSelector<State, S3>,\n    s4: SignalSelector<State, S4>,\n    s5: SignalSelector<State, S5>,\n    s6: SignalSelector<State, S6>,\n    projector: (s1: S1, s2: S2, s3: S3, s4: S4, s5: S5, s6: S6) => Result\n): SignalSelector<State, Result>;\n\nexport function createSelector<State, S1, S2, S3, S4, S5, S6, S7, Result>(\n    s1: SignalSelector<State, S1>,\n    s2: SignalSelector<State, S2>,\n    s3: SignalSelector<State, S3>,\n    s4: SignalSelector<State, S4>,\n    s5: SignalSelector<State, S5>,\n    s6: SignalSelector<State, S6>,\n    s7: SignalSelector<State, S7>,\n    projector: (s1: S1, s2: S2, s3: S3, s4: S4, s5: S5, s6: S6, s7: S7) => Result\n): SignalSelector<State, Result>;\n\nexport function createSelector<State, S1, S2, S3, S4, S5, S6, S7, S8, Result>(\n    s1: SignalSelector<State, S1>,\n    s2: SignalSelector<State, S2>,\n    s3: SignalSelector<State, S3>,\n    s4: SignalSelector<State, S4>,\n    s5: SignalSelector<State, S5>,\n    s6: SignalSelector<State, S6>,\n    s7: SignalSelector<State, S7>,\n    s8: SignalSelector<State, S8>,\n    projector: (s1: S1, s2: S2, s3: S3, s4: S4, s5: S5, s6: S6, s7: S7, s8: S8) => Result\n): SignalSelector<State, Result>;\n\nexport function createSelector(...args: any[]): SignalSelector<any, any> {\n    const selectors = args.slice(0, args.length - 1);\n    const projector = args[args.length - 1];\n\n    const selector: Selector<any, any> = (state) => {\n        const signalsFromSelectors: Signal<any>[] = selectors.map((fn) => {\n            return fn(state); // Pass the state Signal\n        });\n\n        // Return computed Signal which recalculates when one of the `signalsFromSelectors` notifies about changes\n        return computed(() => {\n            const results: any[] = signalsFromSelectors.map((aSignal) => aSignal());\n            return projector(...results);\n        });\n    };\n\n    return addSignalSelectorKey(selector);\n}\n\nexport function createFeatureStateSelector<T>(featureKey?: string): SignalSelector<object, T>;\nexport function createFeatureStateSelector<T, V>(featureKey: keyof T): SignalSelector<T, V>;\nexport function createFeatureStateSelector(featureKey?: any): SignalSelector<any, any> {\n    let selector: Selector<any, any>;\n    if (featureKey) {\n        selector = createSelector(\n            addSignalSelectorKey((state: Signal<any>) => state),\n            (state: AppState) => state[featureKey]\n        );\n    } else {\n        selector = (state) => state; // Do not memoize: when used with FeatureStore there is a new state object created for every `setState`\n    }\n    return addSignalSelectorKey(selector);\n}\n\nexport function createComponentStateSelector<T>(): SignalSelector<T, T> {\n    return addSignalSelectorKey((state: Signal<T>) => state);\n}\n\n// Exported for testing\nexport function addSignalSelectorKey<T, R>(s: Selector<T, R>): SignalSelector<T, R> {\n    Object.defineProperty(s, SIGNAL_SELECTOR_KEY, {\n        value: true,\n    });\n\n    return s as SignalSelector<T, R>;\n}\n\nexport function isSignalSelector(v: any): v is SignalSelector<any, any> {\n    return Object.hasOwn(v, SIGNAL_SELECTOR_KEY);\n}\n","import { computed, Signal, WritableSignal } from '@angular/core';\nimport { isSignalSelector, SignalSelector } from './signal-selector';\nimport { isKey } from '@mini-rx/common';\n\ntype StateSelector<T, R> = (state: T) => R;\n\nfunction createSelectFn<StateType extends object>(state: Signal<StateType>) {\n    function select(): Signal<StateType>;\n    function select<R>(mapFn: SignalSelector<StateType, R>): Signal<R>;\n    function select<R>(mapFn: StateSelector<StateType, R>): Signal<R>;\n    function select<KeyType extends keyof StateType>(key: KeyType): Signal<StateType[KeyType]>;\n    function select(mapFnOrKey?: any): Signal<any> {\n        if (!mapFnOrKey) {\n            return state;\n        }\n\n        if (isSignalSelector(mapFnOrKey)) {\n            return mapFnOrKey(state);\n        }\n\n        return computed(() => {\n            const rawState = state();\n            return isKey(rawState, mapFnOrKey) ? rawState[mapFnOrKey] : mapFnOrKey(state());\n        });\n    }\n\n    return select;\n}\n\nexport function createSelectableSignal<StateType extends object>(state: Signal<StateType>) {\n    return {\n        select: createSelectFn(state),\n        get: () => {\n            return state();\n        },\n    };\n}\n\nexport function createSelectableWritableSignal<StateType extends object>(\n    state: WritableSignal<StateType>\n) {\n    return {\n        select: createSelectFn(state),\n        get: (): StateType => {\n            return state();\n        },\n        set: (v: StateType): void => {\n            state.set(v);\n        },\n    };\n}\n","import { signal } from '@angular/core';\nimport { AppState, createRegisterEffectFn, createStore } from '@mini-rx/common';\nimport { createSelectableWritableSignal } from './create-selectable-signal';\n\nexport const storeCore = createStore(createSelectableWritableSignal<AppState>(signal({})));\nexport const rxEffect = createRegisterEffectFn(storeCore.dispatch);\n","import { AppState, StoreConfig } from '@mini-rx/common';\nimport { storeCore } from './store-core';\n\nexport class Store {\n    dispatch = storeCore.dispatch;\n    select = storeCore.appState.select;\n\n    constructor(config: StoreConfig<AppState>) {\n        storeCore.configureStore(config);\n    }\n}\n","// Credits go to Angular\n// Copied from with small modifications: https://github.com/angular/angular/blob/16.2.10/packages/core/rxjs-interop/src/to_observable.ts\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {\n    assertInInjectionContext,\n    DestroyRef,\n    effect,\n    inject,\n    Injector,\n    Signal,\n    untracked,\n} from '@angular/core';\nimport { ToObservableOptions } from '@angular/core/rxjs-interop';\nimport { Observable, Subject } from 'rxjs';\n\n// Reimplemented `toObservable` from Angular\n// Use Subject instead of ReplaySubject (which is more lightweight and sufficient for internal use in MiniRx)\nexport function miniRxToObservable<T>(\n    source: Signal<T>,\n    options?: ToObservableOptions\n): Observable<T> {\n    !options?.injector && assertInInjectionContext(miniRxToObservable);\n    const injector = options?.injector ?? inject(Injector);\n    const subject = new Subject<T>();\n\n    const watcher = effect(\n        () => {\n            let value: T;\n            try {\n                value = source();\n            } catch (err) {\n                untracked(() => subject.error(err));\n                return;\n            }\n            untracked(() => subject.next(value));\n        },\n        { injector, manualCleanup: true }\n    );\n\n    injector.get(DestroyRef).onDestroy(() => {\n        watcher.destroy();\n        subject.complete();\n    });\n\n    return subject.asObservable();\n}\n","import { DestroyRef, inject } from '@angular/core';\nimport { createSubSink } from '@mini-rx/common';\nimport { Subscription } from 'rxjs';\n\nexport function createSignalStoreSubSink() {\n    const subSink = createSubSink();\n    inject(DestroyRef).onDestroy(subSink.unsubscribe);\n    return {\n        set sink(sub: Subscription) {\n            subSink.sink = sub;\n        },\n    };\n}\n","import { EnvironmentInjector, inject, isSignal, Signal } from '@angular/core';\nimport { isObservable, Observable, Subject } from 'rxjs';\nimport { defaultEffectsErrorHandler } from '@mini-rx/common';\nimport { miniRxToObservable } from './mini-rx-to-observable';\nimport { createSignalStoreSubSink } from './signal-store-sub-sink';\n\nexport function createRxEffectFn() {\n    const subSink = createSignalStoreSubSink();\n    const injector = inject(EnvironmentInjector);\n\n    function rxEffect<\n        // Credits for the typings go to NgRx (Component Store): https://github.com/ngrx/platform/blob/13.1.0/modules/component-store/src/component-store.ts#L279-L291\n        ProvidedType = void,\n        // The actual origin$ type, which could be unknown, when not specified\n        OriginType extends Observable<ProvidedType> | unknown = Observable<ProvidedType>,\n        // Unwrapped actual type of the origin$ Observable, after default was applied\n        ObservableType = OriginType extends Observable<infer A> ? A : never,\n        // Return either an empty callback or a function requiring specific types as inputs\n        ReturnType = ProvidedType | ObservableType extends void\n            ? () => void\n            : (\n                  observableOrValue:\n                      | ObservableType\n                      | Observable<ObservableType>\n                      | Signal<ObservableType>\n              ) => void\n    >(effectFn: (origin$: OriginType) => Observable<unknown>): ReturnType {\n        const subject = new Subject<ObservableType>();\n        const effect$ = effectFn(subject as OriginType);\n        subSink.sink = effect$.pipe(defaultEffectsErrorHandler).subscribe();\n\n        return ((\n            observableOrValue?: ObservableType | Observable<ObservableType> | Signal<ObservableType>\n        ) => {\n            // If we detect a Signal: convert Signal to Observable\n            observableOrValue = isSignal(observableOrValue)\n                ? miniRxToObservable(observableOrValue, { injector })\n                : observableOrValue;\n\n            isObservable(observableOrValue)\n                ? (subSink.sink = observableOrValue.subscribe((v) => subject.next(v)))\n                : subject.next(observableOrValue as ObservableType);\n        }) as unknown as ReturnType;\n    }\n\n    return rxEffect;\n}\n","import { EnvironmentInjector, inject, isSignal, Signal } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { OperationType, UpdateStateCallback } from '@mini-rx/common';\nimport { miniRxToObservable } from './mini-rx-to-observable';\nimport { createSignalStoreSubSink } from './signal-store-sub-sink';\n\nexport function createConnectFn<StateType>(updateStateCallback: UpdateStateCallback<StateType>) {\n    const subSink = createSignalStoreSubSink();\n    const injector = inject(EnvironmentInjector);\n\n    return <K extends keyof StateType, ValueType = StateType[K]>(\n        dict: Record<K, Observable<ValueType> | Signal<ValueType>>\n    ) => {\n        const keys: K[] = Object.keys(dict) as K[];\n\n        keys.forEach((key) => {\n            const observableOrSignal: Observable<ValueType> | Signal<ValueType> = dict[key];\n            const obs$ = isSignal(observableOrSignal)\n                ? miniRxToObservable(observableOrSignal, { injector })\n                : observableOrSignal;\n            subSink.sink = obs$.subscribe((v) => {\n                updateStateCallback(\n                    {\n                        [key]: v,\n                    } as unknown as Partial<StateType>,\n                    OperationType.CONNECTION,\n                    key as string\n                );\n            });\n        });\n    };\n}\n","import { DestroyRef, inject, Signal, untracked } from '@angular/core';\nimport {\n    Action,\n    createFeatureStoreReducer,\n    createMiniRxActionType,\n    createUpdateFn,\n    FeatureStoreConfig,\n    generateFeatureKey,\n    generateId,\n    MiniRxAction,\n    miniRxError,\n    OperationType,\n    StateOrCallback,\n    undo,\n    UpdateStateCallback,\n} from '@mini-rx/common';\nimport { storeCore } from './store-core';\nimport { createSelectableSignal } from './create-selectable-signal';\nimport { ComponentStoreLike } from './models';\nimport { createRxEffectFn } from './create-rx-effect-fn';\nimport { createConnectFn } from './create-connect-fn';\n\nexport class FeatureStore<StateType extends object> implements ComponentStoreLike<StateType> {\n    private readonly featureId: string;\n    private readonly _featureKey: string;\n    get featureKey(): string {\n        return this._featureKey;\n    }\n\n    private _state: Signal<StateType> = storeCore.appState.select(\n        (state) => state[this.featureKey]\n    );\n    get state(): StateType {\n        return untracked(() => this._state());\n    }\n\n    private updateState: UpdateStateCallback<StateType> = (\n        stateOrCallback: StateOrCallback<StateType>,\n        operationType: OperationType,\n        name: string | undefined\n    ): MiniRxAction<StateType> => {\n        return storeCore.dispatch({\n            type: createMiniRxActionType(operationType, this.featureKey, name),\n            stateOrCallback,\n            featureId: this.featureId,\n        });\n    };\n\n    constructor(featureKey: string, initialState: StateType, config: FeatureStoreConfig = {}) {\n        this.featureId = generateId();\n        this._featureKey = generateFeatureKey(featureKey, config.multi);\n\n        storeCore.addFeature<StateType>(\n            this._featureKey,\n            createFeatureStoreReducer(this.featureId, initialState)\n        );\n\n        inject(DestroyRef).onDestroy(() => this.destroy());\n    }\n\n    undo(action: Action): void {\n        storeCore.hasUndoExtension\n            ? storeCore.dispatch(undo(action))\n            : miniRxError('UndoExtension is not initialized.');\n    }\n\n    setState = createUpdateFn(this.updateState);\n    connect = createConnectFn(this.updateState);\n    rxEffect = createRxEffectFn();\n    select = createSelectableSignal(this._state).select;\n\n    private destroy(): void {\n        storeCore.removeFeature(this._featureKey);\n    }\n}\n\nexport function createFeatureStore<T extends object>(\n    featureKey: string,\n    initialState: T,\n    config: FeatureStoreConfig = {}\n): FeatureStore<T> {\n    return new FeatureStore<T>(featureKey, initialState, config);\n}\n","import { DestroyRef, inject, signal, untracked } from '@angular/core';\nimport {\n    Action,\n    calculateExtensions,\n    componentStoreConfig,\n    ComponentStoreConfig,\n    ComponentStoreExtension,\n    componentStoreFeatureKey,\n    createActionsOnQueue,\n    createComponentStoreReducer,\n    createMiniRxActionType,\n    createUpdateFn,\n    ExtensionId,\n    MiniRxAction,\n    miniRxError,\n    OperationType,\n    StateOrCallback,\n    undo,\n    UpdateStateCallback,\n} from '@mini-rx/common';\nimport { createSelectableWritableSignal } from './create-selectable-signal';\nimport { ComponentStoreLike } from './models';\nimport { createRxEffectFn } from './create-rx-effect-fn';\nimport { createConnectFn } from './create-connect-fn';\nimport { createSignalStoreSubSink } from './signal-store-sub-sink';\n\nexport const globalCsConfig = componentStoreConfig();\n\nexport class ComponentStore<StateType extends object> implements ComponentStoreLike<StateType> {\n    private readonly extensions: ComponentStoreExtension[] = calculateExtensions(\n        this.config,\n        globalCsConfig.get()\n    );\n    private readonly hasUndoExtension: boolean = this.extensions.some(\n        (ext) => ext.id === ExtensionId.UNDO\n    );\n\n    private actionsOnQueue = createActionsOnQueue();\n\n    private _state = createSelectableWritableSignal(signal(this.initialState));\n    get state(): StateType {\n        return untracked(() => this._state.get());\n    }\n\n    private updateState: UpdateStateCallback<StateType> = (\n        stateOrCallback: StateOrCallback<StateType>,\n        operationType: OperationType,\n        name: string | undefined\n    ): MiniRxAction<StateType> => {\n        return this.actionsOnQueue.dispatch({\n            type: createMiniRxActionType(operationType, componentStoreFeatureKey, name),\n            stateOrCallback,\n        });\n    };\n\n    constructor(private initialState: StateType, private config?: ComponentStoreConfig) {\n        inject(DestroyRef).onDestroy(() => this.destroy());\n\n        const reducer = createComponentStoreReducer(initialState, this.extensions);\n\n        const subSink = createSignalStoreSubSink();\n        subSink.sink = this.actionsOnQueue.actions$.subscribe((action) => {\n            const newState: StateType = reducer(this.state, action);\n            this._state.set(newState);\n        });\n\n        this.actionsOnQueue.dispatch({\n            type: createMiniRxActionType(OperationType.INIT, componentStoreFeatureKey),\n        });\n    }\n\n    undo(action: Action): void {\n        this.hasUndoExtension\n            ? this.actionsOnQueue.dispatch(undo(action))\n            : miniRxError(`${this.constructor.name} has no UndoExtension yet.`);\n    }\n\n    setState = createUpdateFn(this.updateState);\n    connect = createConnectFn(this.updateState);\n    rxEffect = createRxEffectFn();\n    select = this._state.select;\n\n    private destroy(): void {\n        // Dispatch an action really just for logging via LoggerExtension\n        this.actionsOnQueue.dispatch({\n            type: createMiniRxActionType(OperationType.DESTROY, componentStoreFeatureKey),\n        });\n    }\n}\n\nexport function createComponentStore<T extends object>(\n    initialState: T,\n    config?: ComponentStoreConfig\n): ComponentStore<T> {\n    return new ComponentStore<T>(initialState, config);\n}\n","import { AbstractReduxDevtoolsExtension, Action, AppState } from '@mini-rx/common';\nimport { Observable } from 'rxjs';\nimport { storeCore } from '../store-core';\n\nexport class ReduxDevtoolsExtension extends AbstractReduxDevtoolsExtension {\n    get actions$(): Observable<Action> {\n        return storeCore.actions$;\n    }\n\n    readState(): AppState {\n        return storeCore.appState.get();\n    }\n\n    updateState(state: AppState): void {\n        storeCore.appState.set(state);\n    }\n}\n","import { InjectionToken } from '@angular/core';\nimport { FeatureConfig, miniRxNameSpace, Reducer, StoreConfig } from '@mini-rx/common';\n\n// Injection tokens are part of the bundle, therefore keep the strings as short as possible (they just have to be unique!)\n\nexport const STORE_CONFIG = new InjectionToken<StoreConfig<any>>(`${miniRxNameSpace}/1`);\nexport const FEATURE_NAMES = new InjectionToken<string[]>(`${miniRxNameSpace}/2`);\nexport const FEATURE_REDUCERS = new InjectionToken<Reducer<any>[]>(`${miniRxNameSpace}/3`);\nexport const FEATURE_CONFIGS = new InjectionToken<FeatureConfig<any>[]>(`${miniRxNameSpace}/4`);\n\nexport const OBJECTS_WITH_EFFECTS = new InjectionToken<object[]>(`${miniRxNameSpace}/5`);\n\nexport const STORE_PROVIDER = new InjectionToken<void>(`${miniRxNameSpace}/6`);\nexport const FEATURE_PROVIDER = new InjectionToken<void>(`${miniRxNameSpace}/7`);\nexport const EFFECTS_PROVIDER = new InjectionToken<void>(`${miniRxNameSpace}/8`);\nexport const COMPONENT_STORE_CONFIG_PROVIDER = new InjectionToken<void>(`${miniRxNameSpace}/9`);\n","import { inject, ModuleWithProviders, NgModule } from '@angular/core';\nimport { Actions, AppState, FeatureConfig, Reducer, StoreConfig } from '@mini-rx/common';\nimport { Store } from '../store';\nimport { storeCore } from '../store-core';\nimport {\n    FEATURE_CONFIGS,\n    FEATURE_NAMES,\n    FEATURE_REDUCERS,\n    STORE_CONFIG,\n} from '../injection-tokens';\n\nexport function storeFactory(config: StoreConfig<AppState>) {\n    return new Store(config);\n}\n\n@NgModule()\nexport class StoreRootModule {\n    private store = inject(Store); // Make sure store is initialized also if it is NOT injected in other services/components\n}\n\n@NgModule()\nexport class StoreFeatureModule {\n    constructor() {\n        const storeRootModule = inject(StoreRootModule); // Prevent feature states to be initialized before root state\n        const featureNames: string[] = inject(FEATURE_NAMES);\n        const reducers: Reducer<any>[] = inject(FEATURE_REDUCERS);\n        const configs: FeatureConfig<any>[] = inject(FEATURE_CONFIGS);\n\n        featureNames.forEach((featureName, index) => {\n            storeCore.addFeature(featureName, reducers[index], configs[index]);\n        });\n    }\n}\n\n@NgModule()\nexport class StoreModule {\n    static forRoot<T>(config: StoreConfig<T>): ModuleWithProviders<StoreRootModule> {\n        return {\n            ngModule: StoreRootModule,\n            providers: [\n                { provide: STORE_CONFIG, useValue: config },\n                {\n                    provide: Store,\n                    useFactory: storeFactory,\n                    deps: [STORE_CONFIG],\n                },\n                {\n                    provide: Actions,\n                    useValue: storeCore.actions$,\n                },\n            ],\n        };\n    }\n\n    static forFeature<T>(\n        featureName: string,\n        reducer: Reducer<T>,\n        config?: Partial<FeatureConfig<T>>\n    ): ModuleWithProviders<StoreFeatureModule> {\n        return {\n            ngModule: StoreFeatureModule,\n            providers: [\n                { provide: FEATURE_NAMES, multi: true, useValue: featureName },\n                { provide: FEATURE_REDUCERS, multi: true, useValue: reducer },\n                { provide: FEATURE_CONFIGS, multi: true, useValue: config },\n            ],\n        };\n    }\n}\n","// Credits go to Marko Stanimirović\n// Copied from with small modifications: https://github.com/markostanimirovic/juliette/blob/1.2.0/projects/juliette-ng/src/lib/effects.mapper.ts\n\n// MIT License\n//\n// Copyright (c) 2020 Marko Stanimirović\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n// SOFTWARE.\n\nimport { ClassProvider, InjectionToken, Type } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { hasEffectMetaData } from '@mini-rx/common';\n\nexport const fromClassesWithEffectsToClassProviders = (\n    injectionToken: InjectionToken<any>,\n    classesWithEffects: Type<any>[]\n): ClassProvider[] =>\n    classesWithEffects.map((classWithEffects) => ({\n        provide: injectionToken,\n        useClass: classWithEffects,\n        multi: true,\n    }));\n\nexport const fromObjectsWithEffectsToEffects = (objectsWithEffects: any[]): Observable<any>[] =>\n    objectsWithEffects.reduce((acc, objectWithEffects) => {\n        const effectsFromCurrentObject = Object.getOwnPropertyNames(objectWithEffects).reduce<\n            Array<Observable<any>>\n        >((acc, prop) => {\n            const effect = objectWithEffects[prop];\n            if (hasEffectMetaData(effect)) {\n                acc.push(effect);\n            }\n            return acc;\n        }, []);\n        return [...acc, ...effectsFromCurrentObject];\n    }, []);\n","// Credits go to Marko Stanimirović\n// Copied from with small modifications: https://github.com/markostanimirovic/juliette/blob/1.2.0/projects/juliette-ng/src/lib/effects.module.ts\n\n// MIT License\n//\n// Copyright (c) 2020 Marko Stanimirović\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n// SOFTWARE.\n\nimport { Inject, ModuleWithProviders, NgModule, Optional, Type } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { Action } from '@mini-rx/common';\nimport {\n    fromClassesWithEffectsToClassProviders,\n    fromObjectsWithEffectsToEffects,\n} from '../effects-mapper';\nimport { StoreFeatureModule, StoreRootModule } from './store.module';\nimport { rxEffect } from '../store-core';\nimport { OBJECTS_WITH_EFFECTS } from '../injection-tokens';\n\n@NgModule()\nexport class EffectsModule {\n    constructor(\n        @Inject(OBJECTS_WITH_EFFECTS) objectsWithEffects: any[],\n        // Make sure effects can select state from store, also if EffectsModule is registered before Store.forFeature\n        @Optional() storeRootModule: StoreRootModule,\n        @Optional() storeFeatureModule: StoreFeatureModule\n    ) {\n        const effects = fromObjectsWithEffectsToEffects(objectsWithEffects);\n        effects.forEach((effect: Observable<Action>) => {\n            rxEffect(effect);\n        });\n    }\n\n    static register(classesWithEffects: Type<any>[]): ModuleWithProviders<EffectsModule> {\n        return {\n            ngModule: EffectsModule,\n            providers: [\n                ...fromClassesWithEffectsToClassProviders(OBJECTS_WITH_EFFECTS, classesWithEffects),\n            ],\n        };\n    }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { ComponentStoreConfig } from '@mini-rx/common';\nimport { globalCsConfig } from '../component-store';\n\n@NgModule()\nexport class ComponentStoreModule {\n    static forRoot(config: ComponentStoreConfig): ModuleWithProviders<ComponentStoreModule> {\n        globalCsConfig.set(config);\n\n        return {\n            ngModule: ComponentStoreModule,\n        };\n    }\n}\n","import {\n    ENVIRONMENT_INITIALIZER,\n    EnvironmentProviders,\n    inject,\n    makeEnvironmentProviders,\n    Type,\n} from '@angular/core';\nimport { Observable } from 'rxjs';\nimport {\n    Action,\n    Actions,\n    AppState,\n    ComponentStoreConfig,\n    FeatureConfig,\n    Reducer,\n    StoreConfig,\n} from '@mini-rx/common';\nimport { rxEffect, storeCore } from './store-core';\nimport { Store } from './store';\nimport { globalCsConfig } from './component-store';\nimport {\n    fromClassesWithEffectsToClassProviders,\n    fromObjectsWithEffectsToEffects,\n} from './effects-mapper';\nimport {\n    COMPONENT_STORE_CONFIG_PROVIDER,\n    EFFECTS_PROVIDER,\n    FEATURE_CONFIGS,\n    FEATURE_NAMES,\n    FEATURE_PROVIDER,\n    FEATURE_REDUCERS,\n    OBJECTS_WITH_EFFECTS,\n    STORE_CONFIG,\n    STORE_PROVIDER,\n} from './injection-tokens';\n\n// Store\nfunction storeFactory(config: StoreConfig<AppState>) {\n    return new Store(config);\n}\n\nfunction rootStoreProviderFactory(): void {\n    inject(Store);\n    inject(Actions);\n}\n\nexport function provideStore<T>(config: StoreConfig<T>): EnvironmentProviders {\n    return makeEnvironmentProviders([\n        { provide: STORE_CONFIG, useValue: config },\n        {\n            provide: Store,\n            useFactory: storeFactory,\n            deps: [STORE_CONFIG],\n        },\n        {\n            provide: Actions,\n            useValue: storeCore.actions$,\n        },\n        { provide: STORE_PROVIDER, useFactory: rootStoreProviderFactory },\n        {\n            provide: ENVIRONMENT_INITIALIZER,\n            multi: true,\n            useFactory() {\n                return () => inject(STORE_PROVIDER);\n            },\n        },\n    ]);\n}\n\n// Feature\nfunction featureProviderFactory(): void {\n    const featureNames = inject(FEATURE_NAMES);\n    const reducers = inject(FEATURE_REDUCERS);\n    const configs = inject(FEATURE_CONFIGS);\n\n    featureNames.forEach((featureName, index) => {\n        storeCore.addFeature(featureName, reducers[index], configs[index]);\n    });\n}\n\nexport function provideFeature<T>(\n    featureName: string,\n    reducer: Reducer<T>,\n    config?: Partial<FeatureConfig<T>>\n): EnvironmentProviders {\n    return makeEnvironmentProviders([\n        { provide: FEATURE_NAMES, multi: true, useValue: featureName },\n        { provide: FEATURE_REDUCERS, multi: true, useValue: reducer },\n        { provide: FEATURE_CONFIGS, multi: true, useValue: config },\n        { provide: FEATURE_PROVIDER, useFactory: featureProviderFactory },\n        {\n            provide: ENVIRONMENT_INITIALIZER,\n            multi: true,\n            useFactory() {\n                return () => inject(FEATURE_PROVIDER);\n            },\n        },\n    ]);\n}\n\n// Effects\nfunction effectsProviderFactory(): void {\n    const objectsWithEffects = inject(OBJECTS_WITH_EFFECTS);\n\n    const effects = fromObjectsWithEffectsToEffects(objectsWithEffects);\n    effects.forEach((effect: Observable<Action>) => {\n        rxEffect(effect);\n    });\n}\n\nexport function provideEffects(classesWithEffects: Type<any>[]): EnvironmentProviders;\nexport function provideEffects(...classesWithEffects: Type<any>[]): EnvironmentProviders;\nexport function provideEffects(...classesWithEffects: any[]): EnvironmentProviders {\n    return makeEnvironmentProviders([\n        ...fromClassesWithEffectsToClassProviders(OBJECTS_WITH_EFFECTS, classesWithEffects),\n        { provide: EFFECTS_PROVIDER, useFactory: effectsProviderFactory },\n        {\n            provide: ENVIRONMENT_INITIALIZER,\n            multi: true,\n            useFactory() {\n                return () => inject(EFFECTS_PROVIDER);\n            },\n        },\n    ]);\n}\n\n// Component Store config\nexport function provideComponentStoreConfig(config: ComponentStoreConfig) {\n    return makeEnvironmentProviders([\n        {\n            provide: COMPONENT_STORE_CONFIG_PROVIDER,\n            useFactory: () => globalCsConfig.set(config),\n        },\n        {\n            provide: ENVIRONMENT_INITIALIZER,\n            multi: true,\n            useFactory() {\n                return () => inject(COMPONENT_STORE_CONFIG_PROVIDER);\n            },\n        },\n    ]);\n}\n","/*\n * Public API Surface of Signal Store\n */\n\nexport { Store } from './lib/store';\nexport { FeatureStore, createFeatureStore } from './lib/feature-store';\nexport { ComponentStore, createComponentStore } from './lib/component-store';\nexport {\n    createSelector,\n    createFeatureStateSelector,\n    createComponentStateSelector,\n} from './lib/signal-selector';\nexport { ReduxDevtoolsExtension } from './lib/extensions/redux-devtools.extension';\nexport { StoreRootModule, StoreModule, StoreFeatureModule } from './lib/modules/store.module';\nexport { EffectsModule } from './lib/modules/effects.module';\nexport { ComponentStoreModule } from './lib/modules/component-store.module';\nexport {\n    provideStore,\n    provideFeature,\n    provideEffects,\n    provideComponentStoreConfig,\n} from './lib/providers';\n\n// Re-export from @mini-rx/common\nexport {\n    Action,\n    Reducer,\n    Actions,\n    StoreConfig,\n    FeatureConfig,\n    FeatureStoreConfig,\n    ComponentStoreConfig,\n    StoreExtension,\n    undo,\n    tapResponse,\n    createRxEffect,\n    LoggerExtension,\n    ImmutableStateExtension,\n    UndoExtension,\n    mapResponse,\n    ReduxDevtoolsOptions,\n} from '@mini-rx/common';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["storeFactory","i1.StoreRootModule","i1.StoreFeatureModule"],"mappings":"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"}