{"version":3,"file":"craftsjs-ngrx-action.mjs","sources":["../../../../projects/craftsjs/ngrx-action/src/lib/internals.ts","../../../../projects/craftsjs/ngrx-action/src/lib/action.ts","../../../../projects/craftsjs/ngrx-action/src/lib/of-action.ts","../../../../projects/craftsjs/ngrx-action/src/lib/store.ts","../../../../projects/craftsjs/ngrx-action/src/lib/select.ts","../../../../projects/craftsjs/ngrx-action/src/lib/factory.ts","../../../../projects/craftsjs/ngrx-action/src/lib/redux-tokens.ts","../../../../projects/craftsjs/ngrx-action/src/lib/redux-register-feature.module.ts","../../../../projects/craftsjs/ngrx-action/src/lib/redux-register-root.module.ts","../../../../projects/craftsjs/ngrx-action/src/lib/redux-register.module.ts","../../../../projects/craftsjs/ngrx-action/src/lib/redux-register.providers.ts","../../../../projects/craftsjs/ngrx-action/src/public-api.ts","../../../../projects/craftsjs/ngrx-action/src/craftsjs-ngrx-action.ts"],"sourcesContent":["import { ActionCreator } from '@ngrx/store';\r\n\r\nexport const NGRX_ACTIONS_META = '__ngrx__actions__';\r\n\r\nexport interface StoreMetadata {\r\n    initialState?: any;\r\n    actions: ActionsMeta;\r\n    effects: ActionsMeta;\r\n}\r\n\r\nexport interface ActionMeta {\r\n    action: ActionCreator;\r\n    fn: string;\r\n    type: string;\r\n}\r\n\r\nexport interface ActionsMeta {\r\n    [type: string]: ActionMeta;\r\n}\r\n\r\nexport function ensureStoreMetadata(target: any): StoreMetadata {\r\n    // see https://github.com/angular/angular/blob/master/packages/core/src/util/decorators.ts#L60\r\n    // eslint-disable-next-line no-prototype-builtins\r\n    if (!target.hasOwnProperty(NGRX_ACTIONS_META)) {\r\n        const defaultMetadata: StoreMetadata = { actions: {}, effects: {} };\r\n        Object.defineProperty(target, NGRX_ACTIONS_META, { value: defaultMetadata });\r\n    }\r\n    return target[NGRX_ACTIONS_META];\r\n}\r\n","import { ensureStoreMetadata } from './internals';\r\nimport { ActionCreator } from '@ngrx/store';\r\n\r\nexport function Action(...actionsKlasses: ActionCreator[]) {\r\n    return function(target: any, name: string) {\r\n        const meta = ensureStoreMetadata(target.constructor);\r\n\r\n        for (const klass of actionsKlasses) {\r\n            const type = klass.type;\r\n\r\n            if (meta.actions[type]) {\r\n                throw new Error(\r\n                    `@Action for '${type}' is defined multiple times in functions '${meta.actions[type].fn}' and '${name}'`\r\n                );\r\n            }\r\n\r\n            meta.actions[type] = {\r\n                action: klass,\r\n                fn: name,\r\n                type\r\n            };\r\n        }\r\n    };\r\n}\r\n","import { Action, ActionCreator } from '@ngrx/store';\r\nimport { filter } from 'rxjs/operators';\r\nimport { OperatorFunction } from 'rxjs';\r\n\r\nexport function ofAction<T extends Action>(allowedType: ActionCreator): OperatorFunction<Action, T>;\r\nexport function ofAction<T extends Action>(...allowedTypes: ActionCreator[]): OperatorFunction<Action, T>;\r\nexport function ofAction(...allowedTypes: ActionCreator[]): OperatorFunction<Action, Action> {\r\n    const allowedMap = {};\r\n    allowedTypes.forEach(klass => (allowedMap[klass.type] = true));\r\n    return filter((action: Action) => {\r\n        return allowedMap[action.type];\r\n    });\r\n}\r\n","import { ensureStoreMetadata } from './internals';\r\n\r\n// eslint-disable-next-line @typescript-eslint/ban-types\r\nexport function Store<TState>(initialState?: TState): (target: Function) => void;\r\n// eslint-disable-next-line @typescript-eslint/ban-types\r\nexport function Store(initialState?: any): (target: Function) => void;\r\nexport function Store(initialState: any = {}) {\r\n    // eslint-disable-next-line @typescript-eslint/ban-types\r\n    return function (target: Function) {\r\n        const meta = ensureStoreMetadata(target);\r\n        meta.initialState = initialState;\r\n    };\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Store, Selector } from '@ngrx/store';\r\n\r\n@Injectable()\r\nexport class NgrxSelect {\r\n    static store: Store<any> | undefined = undefined;\r\n    connect(store: Store<any>) {\r\n        NgrxSelect.store = store;\r\n    }\r\n}\r\n\r\nexport function Select<TState = any, TValue = any>(\r\n    selector: Selector<TState, TValue>\r\n): (target: any, name: string) => void;\r\n\r\nexport function Select(\r\n    selectorOrFeature?: string,\r\n    ...paths: string[]\r\n): (target: any, name: string) => void;\r\n\r\n/**\r\n * Slice state from the store.\r\n */\r\nexport function Select<TState = any, TValue = any>(\r\n    selectorOrFeature?: string | Selector<TState, TValue>,\r\n    ...paths: string[]\r\n) {\r\n    return function (target: any, name: string): void {\r\n        const selectorFnName = '__' + name + '__selector';\r\n        let fn: Selector<TState, TValue>;\r\n        // Nothing here? Use propery name as selector\r\n        if (!selectorOrFeature) {\r\n            selectorOrFeature = name;\r\n        }\r\n        // Handle string vs Selector<TState, TValue>\r\n        if (typeof selectorOrFeature === 'string') {\r\n            const propsArray = paths.length ? [selectorOrFeature, ...paths] : selectorOrFeature.split('.');\r\n            fn = fastPropGetter(propsArray);\r\n        } else {\r\n            fn = selectorOrFeature;\r\n        }\r\n\r\n        const createSelect = () => {\r\n            const store = NgrxSelect.store;\r\n            if (!store) {\r\n                throw new Error('NgrxSelect not connected to store!');\r\n            }\r\n            return store.select(fn);\r\n        };\r\n\r\n        if (target[selectorFnName]) {\r\n            throw new Error('You cannot use @Select decorator and a ' + selectorFnName + ' property.');\r\n        }\r\n\r\n        // Redefine property\r\n        if (delete target[name]) {\r\n            Object.defineProperty(target, selectorFnName, {\r\n                writable: true,\r\n                enumerable: false,\r\n                configurable: true\r\n            });\r\n\r\n            Object.defineProperty(target, name, {\r\n                get: function () {\r\n                    return this[selectorFnName] || (this[selectorFnName] = createSelect.apply(this));\r\n                },\r\n                enumerable: true,\r\n                configurable: true\r\n            });\r\n        }\r\n    };\r\n}\r\n\r\n/**\r\n * The generated function is faster than:\r\n * - pluck (Observable operator)\r\n * - memoize (old ngrx-actions implementation)\r\n * - MemoizedSelector (ngrx)\r\n */\r\nexport function fastPropGetter(paths: string[]): (x: any) => any {\r\n    const segments = paths;\r\n    let seg = 'store.' + segments[0],\r\n        i = 0;\r\n    const l = segments.length;\r\n    let expr = seg;\r\n    while (++i < l) {\r\n        expr = expr + ' && ' + (seg = seg + '.' + segments[i]);\r\n    }\r\n    // eslint-disable-next-line @typescript-eslint/no-implied-eval\r\n    const fn = new Function('store', 'return ' + expr + ';');\r\n    return <(x: any) => any>fn;\r\n}\r\n","import { Action, ActionCreator } from '@ngrx/store';\r\nimport { NGRX_ACTIONS_META, StoreMetadata } from './internals';\r\n\r\nexport function createReducer<TState = any>(\r\n    store:\r\n        | {\r\n            // tslint:disable-next-line:callable-types\r\n            new(...args: any[]): any;\r\n        }\r\n        | any\r\n): (state: TState, action: Action | any) => TState {\r\n    const isInstance = !store.prototype;\r\n    const klass = isInstance ? store.constructor : store;\r\n\r\n    // eslint-disable-next-line no-prototype-builtins\r\n    if (!klass.hasOwnProperty(NGRX_ACTIONS_META)) {\r\n        throw new Error('A reducer can be created from a @Store decorated class only.');\r\n    }\r\n\r\n    const instance = isInstance ? store : new store();\r\n    const { initialState, actions } = klass[NGRX_ACTIONS_META] as StoreMetadata;\r\n\r\n    return (state: any = initialState, action: ActionCreator) => {\r\n        const actionMeta = actions[action.type];\r\n        if (actionMeta) {\r\n            const result = instance[actionMeta.fn](state, action);\r\n            if (result === undefined) {\r\n                if (Array.isArray(state)) {\r\n                    return [...state];\r\n                } else {\r\n                    return { ...state };\r\n                }\r\n            }\r\n            state = result;\r\n        }\r\n        return state;\r\n    };\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nexport const STORE_TOKEN = new InjectionToken<any>('STORE_ADDAPPTABLE_TOKEN');\r\nexport const FEATURE_STORE_TOKEN = new InjectionToken<any>('FEATURE_ADDAPPTABLE_STORE_TOKEN');\r\n","import { NgModule, Optional, Inject, Injector } from '@angular/core';\r\nimport { ReducerManager, combineReducers } from '@ngrx/store';\r\nimport { FEATURE_STORE_TOKEN } from './redux-tokens';\r\nimport { createReducer } from './factory';\r\n\r\n@NgModule()\r\nexport class ReduxRegisterFeatureModule {\r\n    constructor(@Optional() @Inject(FEATURE_STORE_TOKEN) featureReducers: any, @Optional() reducerFactory: ReducerManager, parentInjector: Injector\r\n    ) {\r\n        if (featureReducers) {\r\n            featureReducers.forEach(featureReducer => {\r\n                if (typeof featureReducer.key !== 'string') {\r\n                    featureReducer.reducers = featureReducer.key;\r\n                    featureReducer.key = undefined;\r\n                }\r\n\r\n                const mapped = {};\r\n                // tslint:disable-next-line:forin\r\n                for (const key in featureReducer.reducers) {\r\n                    const klass = featureReducer.reducers[key];\r\n                    // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\r\n                    const inst = parentInjector.get(klass, new klass(), { optional: false });\r\n                    mapped[key] = createReducer(inst);\r\n                }\r\n\r\n                if (featureReducer.key) {\r\n                    reducerFactory.addFeature({\r\n                        reducers: mapped,\r\n                        reducerFactory: combineReducers as any,\r\n                        key: featureReducer.key\r\n                    });\r\n                }\r\n            });\r\n        }\r\n    }\r\n}\r\n","import { NgModule, Injector, Inject, Optional } from '@angular/core';\r\nimport { ReducerManager } from '@ngrx/store';\r\nimport { STORE_TOKEN } from './redux-tokens';\r\nimport { createReducer } from './factory';\r\n\r\n/**\r\n * ReduxRegisterRootModule\r\n *\r\n * Provides root-level registration of reducer classes decorated with @Store.\r\n * Compatibility: Angular 18, NgRx reducers.\r\n * Ensure the host application imports `StoreModule.forRoot(...)` to provide ReducerManager when using this module.\r\n */\r\n@NgModule()\r\nexport class ReduxRegisterRootModule {\r\n    constructor(@Optional() @Inject(STORE_TOKEN) reducers: any, @Optional() reducerFactory: ReducerManager, parentInjector: Injector) {\r\n        if (reducers) {\r\n            // tslint:disable-next-line:forin\r\n            for (const key in reducers) {\r\n                const klass = reducers[key];\r\n                // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\r\n                const inst = parentInjector.get(klass, new klass(), { optional: false });\r\n                reducerFactory.addReducer(key, createReducer(inst));\r\n            }\r\n        }\r\n    }\r\n}\r\n","import { NgModule, ModuleWithProviders } from '@angular/core';\r\nimport { ReduxRegisterRootModule } from './redux-register-root.module';\r\nimport { STORE_TOKEN, FEATURE_STORE_TOKEN } from './redux-tokens';\r\nimport { ReduxRegisterFeatureModule } from './redux-register-feature.module';\r\nimport { StoreModule } from '@ngrx/store';\r\n\r\n/**\r\n * ReduxRegisterModule\r\n *\r\n * Compatibility: Angular 18, NgRx compatible versions.\r\n * This module provides helpers to register root and feature store reducers from decorated classes.\r\n * Usage:\r\n *   - In the application root import `StoreModule.forRoot({})` from `@ngrx/store`.\r\n *   - Then import `ReduxRegisterModule.forRoot(...)` to register decorated reducer classes.\r\n *\r\n * Note: The library tolerates absence of Store by making internal ReducerManager injections optional.\r\n */\r\n@NgModule({\r\n    imports: [StoreModule]\r\n})\r\nexport class ReduxRegisterModule {\r\n    static forRoot(reducers: any): ModuleWithProviders<ReduxRegisterRootModule> {\r\n        return {\r\n            ngModule: ReduxRegisterRootModule,\r\n            providers: [\r\n                {\r\n                    provide: STORE_TOKEN,\r\n                    useValue: reducers\r\n                }\r\n            ]\r\n        };\r\n    }\r\n\r\n    static forFeature(key: any, reducers?: any): ModuleWithProviders<ReduxRegisterFeatureModule> {\r\n        return {\r\n            ngModule: ReduxRegisterFeatureModule,\r\n            providers: [\r\n                {\r\n                    provide: FEATURE_STORE_TOKEN,\r\n                    useValue: { key, reducers },\r\n                    multi: true\r\n                }\r\n            ]\r\n        };\r\n    }\r\n}\r\n","import { ENVIRONMENT_INITIALIZER, EnvironmentProviders, Injector, makeEnvironmentProviders, inject } from '@angular/core';\r\nimport { ReducerManager, combineReducers } from '@ngrx/store';\r\nimport { FEATURE_STORE_TOKEN, STORE_TOKEN } from './redux-tokens';\r\nimport { createReducer } from './factory';\r\n\r\n/**\r\n * Standalone providers to register reducers without NgModules (Angular 15+).\r\n * These mirror ReduxRegisterModule.forRoot/forFeature.\r\n */\r\n\r\nexport function provideReduxRegisterRoot(reducers: Record<string, any>): EnvironmentProviders {\r\n  return makeEnvironmentProviders([\r\n    { provide: STORE_TOKEN, useValue: reducers },\r\n    {\r\n      provide: ENVIRONMENT_INITIALIZER,\r\n      multi: true,\r\n      useFactory: () => {\r\n        const providedReducers = inject(STORE_TOKEN, { optional: true });\r\n        const reducerManager = inject(ReducerManager, { optional: true });\r\n        const injector = inject(Injector);\r\n\r\n        return () => {\r\n          if (!providedReducers || !reducerManager) return;\r\n\r\n          // tslint:disable-next-line:forin\r\n          for (const key in providedReducers) {\r\n            const klass = providedReducers[key];\r\n            // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\r\n            const inst = injector.get(klass, new klass(), { optional: false });\r\n            reducerManager.addReducer(key, createReducer(inst));\r\n          }\r\n        };\r\n      }\r\n    }\r\n  ]);\r\n}\r\n\r\nexport function provideReduxRegisterFeature(\r\n  key: string | Record<string, any>,\r\n  reducers?: Record<string, any>\r\n): EnvironmentProviders {\r\n  return makeEnvironmentProviders([\r\n    { provide: FEATURE_STORE_TOKEN, useValue: { key, reducers }, multi: true },\r\n    {\r\n      provide: ENVIRONMENT_INITIALIZER,\r\n      multi: true,\r\n      useFactory: () => {\r\n        const featureReducers = inject(FEATURE_STORE_TOKEN, { optional: true });\r\n        const reducerManager = inject(ReducerManager, { optional: true });\r\n        const injector = inject(Injector);\r\n\r\n        return () => {\r\n          if (!featureReducers || !reducerManager) return;\r\n\r\n          featureReducers.forEach((featureReducer: any) => {\r\n            if (typeof featureReducer.key !== 'string') {\r\n              featureReducer.reducers = featureReducer.key;\r\n              featureReducer.key = undefined;\r\n            }\r\n\r\n            const mapped: Record<string, any> = {};\r\n            // tslint:disable-next-line:forin\r\n            for (const k in featureReducer.reducers) {\r\n              const klass = featureReducer.reducers[k];\r\n              // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\r\n              const inst = injector.get(klass, new klass(), { optional: false });\r\n              mapped[k] = createReducer(inst);\r\n            }\r\n\r\n            if (featureReducer.key) {\r\n              reducerManager.addFeature({\r\n                reducers: mapped,\r\n                reducerFactory: combineReducers as any,\r\n                key: featureReducer.key\r\n              });\r\n            }\r\n          });\r\n        };\r\n      }\r\n    }\r\n  ]);\r\n}\r\n","/*\r\n * Public API Surface of ngrx-actions\r\n */\r\n\r\nexport * from './lib/action';\r\nexport * from './lib/of-action';\r\nexport * from './lib/store';\r\nexport * from './lib/select';\r\nexport * from './lib/factory';\r\nexport * from './lib/redux-register-feature.module';\r\nexport * from './lib/redux-register-root.module';\r\nexport * from './lib/redux-register.module';\r\nexport * from './lib/redux-register.providers';\r\nexport * from './lib/redux-tokens';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}