{"version":3,"file":"ngx-statewise.mjs","sources":["../../../projects/ngx-statewise/src/lib/action/utils/action.utils.ts","../../../projects/ngx-statewise/src/lib/action/services/factories/action.factory.ts","../../../projects/ngx-statewise/src/lib/action/services/handlers/action-group.handler.ts","../../../projects/ngx-statewise/src/lib/action/services/handlers/single-action.handler.ts","../../../projects/ngx-statewise/src/lib/action/services/action.service.ts","../../../projects/ngx-statewise/src/lib/registries/effect-relation.registery.ts","../../../projects/ngx-statewise/src/lib/registries/pending-effect.registery.ts","../../../projects/ngx-statewise/src/lib/effect/services/resolvers/effect-result.resolver.ts","../../../projects/ngx-statewise/src/lib/registries/global-updators.registery.ts","../../../projects/ngx-statewise/src/lib/registries/action-context.registery.ts","../../../projects/ngx-statewise/src/lib/registries/local-updators.registery.ts","../../../projects/ngx-statewise/src/lib/updator/utils/updator.utils.ts","../../../projects/ngx-statewise/src/lib/registries/global-effect.registery.ts","../../../projects/ngx-statewise/src/lib/action/services/action-history.service.ts","../../../projects/ngx-statewise/src/lib/action/services/handlers/action-effect.handler.ts","../../../projects/ngx-statewise/src/lib/action/services/action-dispatcher.service.ts","../../../projects/ngx-statewise/src/lib/manager/services/coordinator.service.ts","../../../projects/ngx-statewise/src/lib/manager/services/resolvers/updator.resolver.ts","../../../projects/ngx-statewise/src/lib/manager/services/handlers/dispatch.handler.ts","../../../projects/ngx-statewise/src/lib/effect/services/handlers/effect-result.handler.ts","../../../projects/ngx-statewise/src/lib/effect/services/effect-promise.service.ts","../../../projects/ngx-statewise/src/lib/effect/services/effect-registration.service.ts","../../../projects/ngx-statewise/src/lib/injector/root-injector.ts","../../../projects/ngx-statewise/src/lib/injector/injection-utils.ts","../../../projects/ngx-statewise/src/lib/effect/utils/create-effect.utils.ts","../../../projects/ngx-statewise/src/lib/effect/utils/pending-effect.utils.ts","../../../projects/ngx-statewise/src/lib/manager/services/dispatch.service.ts","../../../projects/ngx-statewise/src/lib/manager/services/handlers/dispatchAsync.handler.ts","../../../projects/ngx-statewise/src/lib/manager/services/dispatchAsync.service.ts","../../../projects/ngx-statewise/src/lib/updator/services/updator-registration.service.ts","../../../projects/ngx-statewise/src/lib/providers/provide-statewise.ts","../../../projects/ngx-statewise/src/lib/providers/provide-effects.ts","../../../projects/ngx-statewise/src/lib/providers/provide-updator.ts","../../../projects/ngx-statewise/src/public-api.ts","../../../projects/ngx-statewise/src/ngx-statewise.ts"],"sourcesContent":["import {\n  Action,\n  EmptyPayloadFn,\n  ValuePayloadFn,\n} from '../interfaces/action-type';\n\n/**\n * Represents an empty payload for actions without data.\n *\n * @returns `undefined`\n */\nexport const emptyPayload: EmptyPayloadFn = () => undefined;\n\n/**\n * Creates a typed identity function for payloads.\n *\n * Useful to define payload handlers with a specific type.\n *\n * @template T - The expected payload type.\n * @returns A function that returns the same payload it receives.\n */\nexport function payload<T>(): ValuePayloadFn<T> {\n  return (p: T) => p;\n}\n\n/**\n * Converts a camelCase or PascalCase string to SCREAMING_SNAKE_CASE.\n *\n * @param str - The input string.\n * @returns The same string converted to SCREAMING_SNAKE_CASE.\n *\n * @example\n * toScreamingSnakeCase('loadFailure') // 'LOAD_FAILURE'\n * toScreamingSnakeCase('UserLogin')   // 'USER_LOGIN'\n */\nexport function toScreamingSnakeCase(str: string): string {\n  return str.replace(/([a-z])([A-Z])/g, '$1_$2').toUpperCase();\n}\n\n/**\n * Extracts the action type string from an action creator or object.\n *\n * @param action - Either an action creator (function with `.type`) or an action object.\n * @returns The `type` string.\n *\n * @example\n * ofType(someActionCreator) // 'SOME_ACTION'\n * ofType({ type: 'MY_ACTION' }) // 'MY_ACTION'\n */\nexport function ofType<T extends (...args: any[]) => Action>(action: T): string;\nexport function ofType(action: { type: string }): string;\nexport function ofType(action: any): string {\n  if (typeof action === 'function') {\n    return action.type;\n  }\n  return action.type;\n}\n","import { SingleAction, ValuePayloadFn } from \"../../interfaces/action-type\";\nimport { emptyPayload } from \"../../utils/action.utils\";\n\nexport class ActionCreatorFactory {\n  public static defineActionCreator<T extends string, P>(\n    type: T,\n    payloadFn: SingleAction<P>\n  ): any {\n    let fn: any;\n    if (payloadFn === emptyPayload) {\n      fn = () => this.createAction(type);\n    } else {\n      fn = (payload: P) =>\n        this.createAction(type, (payloadFn as ValuePayloadFn<P>)(payload));\n    }\n    fn.type = type;\n    return fn;\n  }\n\n  private static createAction<T extends string>(type: T): { type: T };\n  private static createAction<T extends string, P>(\n    type: T,\n    payload: P\n  ): { type: T; payload: P };\n  private static createAction<T extends string, P>(\n    type: T,\n    payload?: P\n  ): { type: T; payload?: P } {\n    return payload === undefined ? { type } : { type, payload };\n  }\n}\n","import {\n  SingleAction,\n  EmptyPayloadFn,\n  CamelToSnakeCase,\n} from '../../interfaces/action-type';\nimport { toScreamingSnakeCase } from '../../utils/action.utils';\nimport { ActionCreatorFactory } from '../factories/action.factory';\n\nexport class ActionGroupHandler {\n\n  public static handle<\n    Source extends string,\n    Events extends Record<string, SingleAction<any>>\n  >(config: {\n    source: Source;\n    events: Events;\n  }): {\n    [K in keyof Events]: Events[K] extends EmptyPayloadFn\n      ? () => {\n          type: `${Uppercase<Source>}_${Uppercase<\n            CamelToSnakeCase<string & K>\n          >}`;\n        }\n      : (payload: Parameters<Events[K]>[0]) => {\n          type: `${Uppercase<Source>}_${Uppercase<\n            CamelToSnakeCase<string & K>\n          >}`;\n          payload: Parameters<Events[K]>[0];\n        };\n  } {\n    const { source, events } = config;\n    const result = {} as any;\n    for (const key in events) {\n      const type = `${source.toUpperCase()}_${toScreamingSnakeCase(key)}`;\n      result[key] = ActionCreatorFactory.defineActionCreator(type, events[key]);\n    }\n    return result;\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { SingleAction } from '../../interfaces/action-type';\nimport { ActionCreatorFactory } from '../factories/action.factory';\n\n@Injectable({ providedIn: 'root' })\nexport class SingleActionHandler {\n\n  public static handle<Source extends string, ActionPayload>(\n    source: Source,\n    payload: SingleAction<ActionPayload>\n  ): {\n    action: ActionPayload extends undefined\n      ? () => { type: `${Source}_ACTION` }\n      : (payload: ActionPayload) => {\n          type: `${Source}_ACTION`;\n          payload: ActionPayload;\n        };\n  } {\n    return {\n      action: ActionCreatorFactory.defineActionCreator(\n        `${source}_ACTION`,\n        payload\n      ),\n    } as any;\n  }\n}\n","import { SingleAction } from '../interfaces/action-type';\nimport { ActionGroupHandler } from './handlers/action-group.handler';\nimport { SingleActionHandler } from './handlers/single-action.handler';\n\n\nexport class ActionService {\n\n  public static defineActionsGroup<\n    Source extends string,\n    Events extends Record<string, SingleAction<any>>\n  >(config: { source: Source; events: Events }) {\n    return ActionGroupHandler.handle(config);\n  }\n\n  public static defineSingleAction<Source extends string, ActionPayload>(\n    source: Source,\n    payload: SingleAction<ActionPayload>\n  ) {\n    return SingleActionHandler.handle(source, payload);\n  }\n}\n\n/**\n * Defines a group of related actions with a common source\n *\n * This function provides a convenient way to define action groups without\n * directly injecting the ActionService\n *\n * @param config - Object containing source prefix and events map\n * @returns An object with action creators for each event\n */\nexport function defineActionsGroup<\n  Source extends string,\n  Events extends Record<string, SingleAction<any>>\n>(config: { source: Source; events: Events }) {\n  return ActionService.defineActionsGroup(config);\n}\n\n/**\n * Defines a single action with a source prefix\n *\n * This function provides a convenient way to define a single action without\n * directly injecting the ActionService\n *\n * @param source - Source prefix for the action type\n * @param payload - Payload handler function\n * @returns An object with an action creator\n */\nexport function defineSingleAction<Source extends string, ActionPayload>(\n  source: Source,\n  payload: SingleAction<ActionPayload>\n) {\n  return ActionService.defineSingleAction(source, payload);\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({ providedIn: 'root' })\nexport class EffectRelationRegistery {\n  private readonly actionRelations: Map<string, Set<string>> = new Map();\n\n  public register(parent: string, child: string): void {\n    if (!this.actionRelations.has(parent)) {\n      this.actionRelations.set(parent, new Set());\n    }\n    this.actionRelations.get(parent)?.add(child);\n  }\n\n  public getAllRelated(\n    action: string,\n    visited = new Set<string>()\n  ): Set<string> {\n    if (visited.has(action)) return visited;\n    visited.add(action);\n\n    const children = this.actionRelations.get(action) || new Set();\n    for (const child of children) {\n      this.getAllRelated(child, visited);\n    }\n    return visited;\n  }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { EffectRelationRegistery } from './effect-relation.registery';\n\n@Injectable({ providedIn: 'root' })\nexport class PendingEffectRegistry {\n  private readonly pending: Map<string, Promise<void>[]> = new Map();\n  private readonly effectRelationRegistery = inject(EffectRelationRegistery);\n\n  public register(actionType: string, promise: Promise<void>): Promise<void> {\n    const list = this.pending.get(actionType) || [];\n    this.pending.set(actionType, [...list, promise]);\n\n    promise.finally(() => {\n      const current = this.pending.get(actionType) || [];\n      this.pending.set(\n        actionType,\n        current.filter((p) => p !== promise)\n      );\n    });\n\n    return promise;\n  }\n\n  public get(actionType: string): Promise<void>[] {\n    return this.pending.get(actionType) || [];\n  }\n\n  public async waitFor(actionType: string): Promise<void> {\n    const allRelatedTypes =\n      this.effectRelationRegistery.getAllRelated(actionType);\n    const allPromisesToWait: Promise<void>[] = [];\n    for (const type of allRelatedTypes) {\n      const promises = this.pending.get(type) || [];\n      allPromisesToWait.push(...promises);\n    }\n    await Promise.all(allPromisesToWait);\n  }\n\n  public async waitForAll(): Promise<void> {\n    const all = Array.from(this.pending.values()).flat();\n    await Promise.all(all);\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { isObservable, firstValueFrom } from 'rxjs';\nimport { Action } from '../../../action/interfaces/action-type';\nimport { SWEffects } from '../../interfaces/SWEffects.types';\n\n@Injectable({ providedIn: 'root' })\nexport class EffectResultResolver {\n  public async resolve(result: SWEffects): Promise<(Action | void)[]> {\n    if (result === undefined || result === null) {\n      return [undefined];\n    }\n\n    if (result instanceof Promise) {\n      const awaited = await result;\n\n      if (isObservable(awaited)) {\n        const resolvedObs = await firstValueFrom(awaited);\n        return Array.isArray(resolvedObs) ? resolvedObs : [resolvedObs];\n      }\n\n      return Array.isArray(awaited) ? awaited.flat() : [awaited];\n    }\n\n    if (isObservable(result)) {\n      const resolved = await firstValueFrom(result);\n      return Array.isArray(resolved) ? resolved : [resolved];\n    }\n\n    if (Array.isArray(result)) {\n      return result;\n    }\n\n    return [result];\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { IUpdator } from '../updator/interfaces/updator.interfaces';\n\n@Injectable({ providedIn: 'root' })\nexport class GlobalUpdatorsRegistry {\n  private readonly _updatorRegistry: Map<string, IUpdator<any>> = new Map();\n\n  private constructor() {}\n\n  public registerUpdator<S>(actionType: string, updator: IUpdator<S>): void {\n    if (this._updatorRegistry.has(actionType)) {\n      return;\n    }\n    this._updatorRegistry.set(actionType, updator);\n  }\n\n  public registerFullUpdator<S>(updator: IUpdator<S>): void {\n    Object.keys(updator.updators).forEach((actionType) => {\n      this.registerUpdator(actionType, updator);\n    });\n  }\n\n  public getUpdator<S>(actionType: string): IUpdator<S> | undefined {\n    return this._updatorRegistry.get(actionType);\n  }\n\n  public getRegisteredActionTypes(): string[] {\n    return Array.from(this._updatorRegistry.keys());\n  }\n\n  public hasUpdator(actionType: string): boolean {\n    return this._updatorRegistry.has(actionType);\n  }\n\n  public unregisterUpdator(actionType: string): boolean {\n    return this._updatorRegistry.delete(actionType);\n  }\n\n  public clearUpdators(): void {\n    this._updatorRegistry.clear();\n  }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({ providedIn: 'root' })\nexport class ActionContextRegistery{\n  private readonly contextMap = new Map<string, object>();\n\n  public set(actionType: string, context: object): void {\n    this.contextMap.set(actionType, context);\n  }\n\n  public get(actionType: string): object | undefined {\n    return this.contextMap.get(actionType);\n  }\n\n  public clear(actionType: string): void {\n    this.contextMap.delete(actionType);\n  }\n}\n","import { Injectable } from \"@angular/core\";\nimport { IUpdator } from \"../updator\";\n\n\n@Injectable({ providedIn: 'root' })\nexport class LocalUpdatorRegistry {\n  private readonly localRegistries = new WeakMap<object, Set<IUpdator<any>>>();\n\n  public register<S>(manager: object, updator: IUpdator<S>): void {\n    if (!this.localRegistries.has(manager)) {\n      this.localRegistries.set(manager, new Set());\n    }\n\n    const localRegistry = this.localRegistries.get(manager)!;\n    localRegistry.add(updator);\n  }\n\n  public get<S>(manager: object, actionType: string): IUpdator<S> | undefined {\n    const localRegistry = this.localRegistries.get(manager);\n    if (!localRegistry) return undefined;\n\n    for (const updator of localRegistry) {\n      if (updator.updators[actionType]) {\n        return updator as IUpdator<S>;\n      }\n    }\n\n    return undefined;\n  }\n}\n","import { Action } from '../../action/interfaces/action-type';\nimport { UpdatorGlobalRegistry } from '../interfaces/updator.interfaces';\n\n/**\n * Updates the given state based on the action and the corresponding `updator`.\n *\n * This function looks up the `Updator` function associated with the action type\n * from the provided `updators` registry and applies it to update the state.\n * If no handler is found for the action type, a warning is logged.\n *\n * @template S - The type of the state to be updated.\n * @param state - The current state to be updated.\n * @param action - The action that triggered the state update.\n * @param updators - A registry of action types to their respective `Updator` functions.\n */\nexport function update<S>(\n  state: S,\n  action: Action,\n  updators: UpdatorGlobalRegistry<S>\n): void {\n  const handler = updators[action.type];\n\n  if (handler) {\n    handler(state, action.payload);\n  } else {\n    console.warn(`No handler for action type: ${action.type}`);\n  }\n}\n","import { Injectable } from \"@angular/core\";\nimport { Action } from \"../action/interfaces/action-type\";\n\n@Injectable({ providedIn: 'root' })\nexport class ActionEffectRegistry {\n  private readonly _effects = new Map<string, ((action: Action) => void)[]>();\n\n  public register(actionType: string, effect: (action: Action) => void): void {\n    const list = this._effects.get(actionType) || [];\n    this._effects.set(actionType, [...list, effect]);\n  }\n\n  public get(actionType: string): ((action: Action) => void)[] {\n    return this._effects.get(actionType) || [];\n  }\n\n  public has(actionType: string): boolean {\n    return !!this._effects.get(actionType)?.length;\n  }\n}\n","import { Injectable, signal, Signal } from '@angular/core';\nimport { Action } from '../interfaces/action-type';\n\n@Injectable({ providedIn: 'root' })\nexport class ActionHistoryService {\n  private readonly _latest = signal<Action | null>(null);\n  private readonly _history = signal<Action[]>([]);\n\n  public latest(): Signal<Action | null> {\n    return this._latest.asReadonly();\n  }\n\n  public history(): Signal<Action[]> {\n    return this._history.asReadonly();\n  }\n\n  public record(action: Action): void {\n    this._latest.set(action);\n    this._history.update((list) => [...list, action]);\n  }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { ActionEffectRegistry } from '../../../registries/global-effect.registery';\nimport { Action } from '../../interfaces/action-type';\n\n@Injectable({ providedIn: 'root' })\nexport class ActionEffectHandlerr {\n  private readonly registry = inject(ActionEffectRegistry);\n\n  public handle(action: Action): void {\n    const effects = this.registry.get(action.type);\n    for (const effect of effects) {\n      effect(action);\n    }\n  }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { ActionEffectRegistry } from '../../registries/global-effect.registery';\nimport { PendingEffectRegistry } from '../../registries/pending-effect.registery';\nimport { Action } from '../interfaces/action-type';\nimport { ActionHistoryService } from './action-history.service';\nimport { ActionEffectHandlerr } from './handlers/action-effect.handler';\n\n@Injectable({ providedIn: 'root' })\nexport class ActionDispatcherService {\n  private readonly actionHistory = inject(ActionHistoryService);\n  private readonly actionEffectHandler = inject(ActionEffectHandlerr);\n  private readonly globalEffectRegistery = inject(ActionEffectRegistry);\n  private readonly pendingEffectRegistry = inject(PendingEffectRegistry);\n\n  public emit(action: Action): void {\n    if (!this.globalEffectRegistery.has(action.type)) {\n      this.pendingEffectRegistry.register(action.type, Promise.resolve());\n    }\n\n    this.actionHistory.record(action);\n    this.actionEffectHandler.handle(action);\n  }\n}\n","import { IUpdator } from '../../updator/interfaces/updator.interfaces';\nimport { Action } from '../../action/interfaces/action-type';\nimport { update } from '../../updator/utils/updator.utils';\nimport { inject, Injectable } from '@angular/core';\nimport { PendingEffectRegistry } from '../../registries/pending-effect.registery';\nimport { ActionDispatcherService } from '../../action/services/action-dispatcher.service';\n\n@Injectable({ providedIn: 'root' })\nexport class CoordinatorService {\n  private readonly pendingEffectRegistry = inject(PendingEffectRegistry);\n  private readonly actionDispatcher = inject(ActionDispatcherService);\n\n  public dispatch<S>(action: Action, updator: IUpdator<S>): void {\n    update(updator.state, action, updator.updators);\n    this.actionDispatcher.emit(action);\n  }\n\n  public dispatchAsync<S>(action: Action, updator: IUpdator<S>): Promise<void> {\n    this.dispatch<S>(action, updator);\n    return this.pendingEffectRegistry.waitFor(action.type);\n  }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { ActionContextRegistery } from '../../../registries/action-context.registery';\nimport { GlobalUpdatorsRegistry } from '../../../registries/global-updators.registery';\nimport { LocalUpdatorRegistry } from '../../../registries/local-updators.registery';\nimport { IUpdator } from '../../../updator';\n\n@Injectable({ providedIn: 'root' })\nexport class UpdatorResolver {\n  private readonly globalUpdatorsRegistry = inject(GlobalUpdatorsRegistry);\n  private readonly localUpdatorsRegistry = inject(LocalUpdatorRegistry);\n  private readonly actionContext = inject(ActionContextRegistery);\n\n  resolveUpdator<S>(\n    actionType: string,\n    contextOrUpdator?: object | IUpdator<S>\n  ): IUpdator<S> | undefined {\n    this.setContext(actionType, contextOrUpdator);\n\n    const explicit = this.asUpdator(contextOrUpdator);\n    if (explicit) {\n      this.localUpdatorsRegistry.register(explicit, explicit);\n      return explicit;\n    }\n\n    const local = this.asLocal(contextOrUpdator, actionType);\n    if (local) {\n      return local;\n    }\n\n    return this.globalUpdatorsRegistry.getUpdator<S>(actionType);\n  }\n\n  private setContext(type: string, context?: object | IUpdator<any>) {\n    if (context) this.actionContext.set(type, context);\n  }\n\n  private asUpdator<S>(updator?: object | IUpdator<S>): IUpdator<S> | null {\n    return updator && 'state' in updator && 'updators' in updator\n      ? updator\n      : null;\n  }\n\n  private asLocal<S>(\n    context: object | IUpdator<S> | undefined,\n    type: string\n  ): IUpdator<S> | null {\n    return context && !this.asUpdator(context)\n      ? this.localUpdatorsRegistry.get(context as object, type) ?? null\n      : null;\n  }\n}\n","import { inject, Injectable } from '@angular/core';\n\nimport { CoordinatorService } from '../coordinator.service';\nimport { UpdatorResolver } from '../resolvers/updator.resolver';\nimport { IUpdator } from '../../../updator';\nimport { Action } from '../../../action/interfaces/action-type';\nimport { ActionDispatcherService } from '../../../action/services/action-dispatcher.service';\n\n@Injectable({ providedIn: 'root' })\nexport class DispatchHandler {\n  private readonly coordinator = inject(CoordinatorService);\n  private readonly actionDispatcher = inject(ActionDispatcherService);\n  private readonly updatorResolver = inject(UpdatorResolver);\n\n  public handle<T extends Action, S>(\n    action: T,\n    contextOrUpdator?: object | IUpdator<S>\n  ): void {\n    const updator = this.updatorResolver.resolveUpdator(\n      action.type,\n      contextOrUpdator\n    );\n    if (updator) {\n      this.coordinator.dispatch(action, updator);\n    } else {\n      this.actionDispatcher.emit(action);\n    }\n  }\n}\n","import { Injectable, inject } from '@angular/core';\n\nimport { Action } from '../../../action/interfaces/action-type';\nimport { GlobalUpdatorsRegistry } from '../../../registries/global-updators.registery';\nimport { ActionContextRegistery } from '../../../registries/action-context.registery';\nimport { EffectRelationRegistery } from '../../../registries/effect-relation.registery';\nimport { PendingEffectRegistry } from '../../../registries/pending-effect.registery';\nimport { LocalUpdatorRegistry } from '../../../registries/local-updators.registery';\nimport { DispatchHandler } from '../../../manager/services/handlers/dispatch.handler';\nimport { ActionDispatcherService } from '../../../action/services/action-dispatcher.service';\n\n@Injectable({ providedIn: 'root' })\nexport class EffectResultHandler {\n  private readonly actionDispatcher = inject(ActionDispatcherService);\n  private readonly pendingEffectRegistry = inject(PendingEffectRegistry);\n  private readonly actionContextRegistry = inject(ActionContextRegistery);\n  private readonly effectRelationRegistry = inject(EffectRelationRegistery);\n  private readonly globalUpdatorsRegistry = inject(GlobalUpdatorsRegistry);\n  private readonly localUpdatorRegistry = inject(LocalUpdatorRegistry);\n  private readonly dispatch = inject(DispatchHandler);\n\n  public async handle(\n    results: (Action | void)[],\n    parentActionType: string\n  ): Promise<Promise<void>[]> {\n    const subActionPromises: Promise<void>[] = [];\n    const context = this.actionContextRegistry.get(parentActionType);\n\n    for (const result of results.flat().filter((a): a is Action => !!a)) {\n      this.effectRelationRegistry.register(parentActionType, result.type);\n\n      let used = this.tryUseLocalUpdator(result, context);\n\n      if (!used) {\n        used = this.tryUseGlobalUpdator(result);\n      }\n\n      if (!used) {\n        this.actionDispatcher.emit(result);\n      }\n\n      this.collectPendingPromises(result, subActionPromises);\n    }\n\n    this.actionContextRegistry.clear(parentActionType);\n    return subActionPromises;\n  }\n\n  private tryUseLocalUpdator(action: Action, context?: object): boolean {\n    if (!context) return false;\n\n    const local = this.localUpdatorRegistry.get(context, action.type);\n    if (local) {\n      this.dispatch.handle(action, context);\n      return true;\n    }\n\n    return false;\n  }\n\n  private tryUseGlobalUpdator(action: Action): boolean {\n    const globalUpdator = this.globalUpdatorsRegistry.getUpdator(action.type);\n    if (globalUpdator) {\n      this.dispatch.handle(action, globalUpdator);\n      return true;\n    }\n\n    return false;\n  }\n\n  private collectPendingPromises(\n    action: Action,\n    subActionPromises: Promise<void>[]\n  ): void {\n    const pending = this.pendingEffectRegistry.get(action.type);\n    if (pending.length) {\n      subActionPromises.push(pending[0]);\n    }\n  }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { Action } from '../../action/interfaces/action-type';\nimport { SWEffects } from '../interfaces/SWEffects.types';\nimport { EffectResultResolver } from './resolvers/effect-result.resolver';\nimport { EffectResultHandler } from './handlers/effect-result.handler';\n\n@Injectable({ providedIn: 'root' })\nexport class EffectPromiseService {\n  private readonly effectResultResolver = inject(EffectResultResolver);\n  private readonly effectResultHandler = inject(EffectResultHandler);\n\n  public createPromise(\n    handler: (payload?: any) => SWEffects | Observable<any>,\n    action: Action,\n    actionType: string\n  ): Promise<void> {\n    return (async () => {\n      try {\n        const rawResult = handler(action.payload);\n        const results = await this.effectResultResolver.resolve(rawResult);\n        const subActionPromises = await this.effectResultHandler.handle(\n          results,\n          actionType\n        );\n\n        if (subActionPromises.length > 0) {\n          await Promise.all(subActionPromises);\n        }\n      } catch (error) {\n        console.error(`Effect for ${actionType} failed:`, error);\n      }\n    })();\n  }\n}\n\n","import { Injectable, inject } from '@angular/core';\nimport { Action } from '../../action/interfaces/action-type';\nimport { PendingEffectRegistry } from '../../registries/pending-effect.registery';\nimport { SWEffects } from '../interfaces/SWEffects.types';\nimport { ofType } from '../../action';\nimport { EffectPromiseService } from './effect-promise.service';\nimport { ActionEffectRegistry } from '../../registries/global-effect.registery';\n\n@Injectable({ providedIn: 'root' })\nexport class EffectRegistrationService {\n  private readonly globalEffectRegistry = inject(ActionEffectRegistry);\n  private readonly pendingEffectRegistry = inject(PendingEffectRegistry);\n  private readonly effectPromiseService = inject(EffectPromiseService);\n\n  public registerEffect<T extends (...args: any[]) => Action>(\n    actionCreator: T,\n    handler: (payload?: any) => SWEffects\n  ): void {\n    const actionType = ofType(actionCreator);\n\n    this.globalEffectRegistry.register(actionType, async (action: Action) => {\n      const effectPromise = this.effectPromiseService.createPromise(\n        handler,\n        action,\n        actionType\n      );\n      this.pendingEffectRegistry.register(actionType, effectPromise);\n      return effectPromise;\n    });\n  }\n}\n","import { EnvironmentInjector } from '@angular/core';\n\nlet rootInjector: EnvironmentInjector | null = null;\n\nexport function setRootInjector(injector: EnvironmentInjector): void {\n  rootInjector = injector;\n}\n\nexport function getRootInjector(): EnvironmentInjector {\n  if (!rootInjector) {\n    throw new Error(\n      '[StateManager] EnvironmentInjector not initialized. Ensure that provideStateManager() is included in the providers of bootstrapApplication.'\n    );\n  }\n  return rootInjector;\n}\n","import { runInInjectionContext } from \"@angular/core\";\nimport { getRootInjector } from \"./root-injector\";\n\nexport async function withInjectionContext<T>(\n  fn: () => Promise<T> | T\n): Promise<T> {\n  return runInInjectionContext(getRootInjector(), fn);\n}\n","import { inject } from '@angular/core';\nimport { Action } from '../../action/interfaces/action-type';\nimport { EffectRegistrationService } from '../services/effect-registration.service';\nimport { SWEffects } from '../interfaces/SWEffects.types';\nimport { withInjectionContext } from '../../injector/injection-utils';\n\n/**\n * Registers an effect that listens to a specific action and executes a handler.\n *\n * @param action - The action creator function.\n * @param handler - A function called when the action is dispatched.\n * - Receives the payload if the action defines one.\n * - Can return an action, array of actions, observable, or promise.\n */\nexport function createEffect<T extends (payload: any) => Action>(\n  action: T,\n  handler: (payload: Parameters<T>[0]) => SWEffects\n): void;\n/**\n * Registers an effect for an action without payload.\n *\n * @param action - Action creator with no payload.\n * @param handler - Function executed when the action is dispatched.\n */\nexport function createEffect(\n  action: () => Action,\n  handler: () => SWEffects\n): void;\n/**\n * Internal implementation of createEffect, handling both payload and no-payload cases.\n */\nexport function createEffect(\n  action: (...args: any[]) => Action,\n  handler: (payload?: any) => SWEffects\n): void {\n  withInjectionContext(() => {\n    const effectRegistrationService = inject(EffectRegistrationService);\n    effectRegistrationService.registerEffect(action, handler);\n  });\n}\n","import { inject } from '@angular/core';\nimport { withInjectionContext } from '../../injector/injection-utils';\nimport { PendingEffectRegistry } from '../../registries/pending-effect.registery';\n\n/**\n * Waits for all currently pending effects to resolve.\n *\n * This function ensures that all side effects triggered by actions are completed\n * before continuing with the execution flow.\n *\n * @returns A promise that resolves when all pending effects are completed.\n */\nexport function waitForAllEffects(): Promise<void> {\n  return withInjectionContext(() => {\n    const pendingEffect = inject(PendingEffectRegistry);\n    return pendingEffect.waitForAll();\n  });\n}\n\n/**\n * Waits for pending effects associated with a specific action type to resolve.\n *\n * Useful for scenarios where you need to wait for effects triggered by a particular\n * action before proceeding.\n *\n * @param actionType - The action type whose effects should be waited for.\n * @returns A promise that resolves when all pending effects for the specified action type are completed.\n */\nexport function waitForEffect(actionType: string): Promise<void> {\n  return withInjectionContext(() => {\n    const pendingEffect = inject(PendingEffectRegistry);\n    return pendingEffect.waitFor(actionType);\n  });\n}\n","import { inject, Injectable } from '@angular/core';\nimport { withInjectionContext } from '../../injector/injection-utils';\nimport { Action } from '../../action/interfaces/action-type';\nimport { IUpdator } from '../../updator';\nimport { DispatchHandler } from './handlers/dispatch.handler';\n\n@Injectable({ providedIn: 'root' })\nexport class DispatchService {\n  private readonly dispatchHandler = inject(DispatchHandler);\n\n  public dispatch<T extends Action, S>(\n    action: T,\n    contextOrUpdator?: object | IUpdator<S>\n  ): void {\n    this.dispatchHandler.handle(action, contextOrUpdator);\n  }\n}\n\n/**\n * Dispatches an action with optional updator registration.\n *\n * This function provides a flexible way to dispatch actions:\n * - If only an action is provided, it will be dispatched through the ActionDispatcher\n * - If an updator is also provided, it will be registered (if needed) and used to update state\n *\n * @template T - The action type.\n * @template S - The state type (inferred from updator if provided).\n * @param action - The action to dispatch.\n * @param updator - Optional updator to handle state updates for this action.\n */\nexport function dispatch<T extends Action>(action: T, context?: object): void;\nexport function dispatch<T extends Action, S>(\n  action: T,\n  updator: IUpdator<S>\n): void;\nexport function dispatch<T extends Action, S>(\n  action: T,\n  contextOrUpdator?: object | IUpdator<S>\n): void {\n  withInjectionContext(() => {\n    const dispatchService = inject(DispatchService);\n    dispatchService.dispatch(action, contextOrUpdator);\n  });\n}\n","import { inject, Injectable } from '@angular/core';\n\nimport { ActionContextRegistery } from '../../../registries/action-context.registery';\nimport { PendingEffectRegistry } from '../../../registries/pending-effect.registery';\nimport { CoordinatorService } from '../coordinator.service';\nimport { UpdatorResolver } from '../resolvers/updator.resolver';\nimport { Action } from '../../../action/interfaces/action-type';\nimport { IUpdator } from '../../../updator';\nimport { ActionDispatcherService } from '../../../action/services/action-dispatcher.service';\n\n@Injectable({ providedIn: 'root' })\nexport class DispatchAsyncHandler {\n  private readonly coordinator = inject(CoordinatorService);\n  private readonly actionDispatcher =  inject(ActionDispatcherService);\n  private readonly pendingEffect = inject(PendingEffectRegistry);\n  private readonly actionContext = inject(ActionContextRegistery);\n  private readonly updatorResolver = inject(UpdatorResolver);\n\n  public handle<T extends Action, S>(\n    action: T,\n    contextOrUpdator?: object | IUpdator<S>\n  ): Promise<void> {\n    const updator = this.updatorResolver.resolveUpdator(\n      action.type,\n      contextOrUpdator\n    );\n\n    if (updator) {\n      return this.execWithCleanup(\n        this.coordinator.dispatchAsync(action, updator),\n        action.type\n      );\n    }\n\n    this.actionDispatcher.emit(action);\n    return this.execWithCleanup(\n      this.pendingEffect.waitFor(action.type),\n      action.type\n    );\n  }\n\n  private async execWithCleanup(\n    promise: Promise<void>,\n    type: string\n  ): Promise<void> {\n    try {\n      return await promise;\n    } finally {\n      this.actionContext.clear(type);\n    }\n  }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { withInjectionContext } from '../../injector/injection-utils';\nimport { Action } from '../../action/interfaces/action-type';\nimport { IUpdator } from '../../updator';\nimport { DispatchAsyncHandler } from './handlers/dispatchAsync.handler';\n\n@Injectable({ providedIn: 'root' })\nexport class DispatchAsyncService {\n  private readonly dispatchAsynHandler = inject(DispatchAsyncHandler);\n\n  public dispatchAsync<T extends Action, S>(\n    action: T,\n    contextOrUpdator?: object | IUpdator<S>\n  ): Promise<void> {\n    return this.dispatchAsynHandler.handle(action, contextOrUpdator);\n  }\n}\n\n/**\n * Asynchronously dispatches an action and waits for effects to complete.\n *\n * Similar to `dispatch`, but returns a Promise that resolves when all associated\n * effects are completed. Supports both global and local updators.\n *\n * @template T - The action type.\n * @template S - The state type (inferred from updator if provided).\n * @param action - The action to dispatch.\n * @param updator - Optional updator to handle state updates for this action.\n * @returns A Promise that resolves when all effects for this action are completed.\n */\nexport async function dispatchAsync<T extends Action>(\n  action: T,\n  context?: object\n): Promise<void>;\nexport async function dispatchAsync<T extends Action, S>(\n  action: T,\n  updator: IUpdator<S>\n): Promise<void>;\nexport function dispatchAsync<T extends Action, S>(\n  action: T,\n  contextOrUpdator?: object | IUpdator<S>\n): Promise<void> {\n  return withInjectionContext(() => {\n    const dispatchAsyncService = inject(DispatchAsyncService);\n    return dispatchAsyncService.dispatchAsync(action, contextOrUpdator);\n  });\n}\n","import { Injectable, inject } from '@angular/core';\nimport { withInjectionContext } from '../../injector/injection-utils';\nimport { LocalUpdatorRegistry } from '../../registries/local-updators.registery';\nimport { IUpdator } from '../interfaces/updator.interfaces';\n\n@Injectable({ providedIn: 'root' })\nexport class UpdatorRegistrationService {\n  private readonly localRegistry = inject(LocalUpdatorRegistry);\n\n  public registerLocalUpdator<S>(manager: object, updator: IUpdator<S>): void {\n    this.localRegistry.register(manager, updator);\n  }\n}\n\n/**\n * Registers a local updater for a given manager context.\n *\n * This function should be used within an Angular injection context (e.g. during component initialization).\n *\n * @template S - The state type handled by the updater.\n * @param {object} manager - The local context object (e.g., a component or a service) to associate the updater with.\n * @param {IUpdator<S>} updator - The updater instance defining actions and their update logic for the given state.\n */\nexport function registerLocalUpdator<S>(manager: object, updator: IUpdator<S>) {\n  withInjectionContext(() => {\n    const updatorRegistrationService = inject(UpdatorRegistrationService);\n    updatorRegistrationService.registerLocalUpdator(manager, updator);\n  });\n}\n","import {\n  EnvironmentInjector,\n  inject,\n  provideEnvironmentInitializer,\n} from '@angular/core';\nimport { setRootInjector } from '../injector/root-injector';\n\nexport function provideStatewise() {\n  return provideEnvironmentInitializer(() => {\n    const injector = inject(EnvironmentInjector);\n    setRootInjector(injector);\n  });\n}\n","import {\n  EnvironmentProviders,\n  inject,\n  makeEnvironmentProviders,\n  provideEnvironmentInitializer,\n  Type,\n} from '@angular/core';\n\n/**\n * Registers and instantiates a list of effect classes at application startup.\n *\n * @param effectClasses - Array of effect class types to initialize.\n * @returns EnvironmentProviders to include in your application bootstrap.\n */\nexport function provideEffects(\n  effectClasses: Type<any>[]\n): EnvironmentProviders {\n  return makeEnvironmentProviders([\n    ...effectClasses.map((effectClass) => ({\n      provide: effectClass,\n      useClass: effectClass,\n    })),\n    provideEnvironmentInitializer(() => {\n      effectClasses.forEach((effectClass) => inject(effectClass));\n    }),\n  ]);\n}\n","import {\n  EnvironmentProviders,\n  inject,\n  makeEnvironmentProviders,\n  provideAppInitializer,\n  Type,\n} from '@angular/core';\nimport { IUpdator } from '../updator/interfaces/updator.interfaces';\nimport { GlobalUpdatorsRegistry } from '../registries/global-updators.registery';\n\n/**\n * Registers an array of updators globally at application startup.\n *\n * This function provides a way to register state updators during the Angular\n * application initialization phase, making them available throughout the application\n * without needing to register them with each dispatch call.\n *\n * @param updators - An array of Updator class to be registered globally.\n * @returns Angular EnvironmentProviders to be included in your application bootstrap.\n *\n */\nexport function provideUpdators(\n  updatorClasses: Type<IUpdator<any>>[]\n): EnvironmentProviders {\n  return makeEnvironmentProviders([\n    ...updatorClasses, // ensure classes are registered as providers\n    provideAppInitializer(() => {\n      const registry = inject(GlobalUpdatorsRegistry);\n      updatorClasses.forEach((cls) => {\n        const instance = inject(cls);\n        registry.registerFullUpdator(instance);\n      });\n    }),\n  ]);\n}\n","/*\n * Public API Surface of ngx-statewise\n */\n\nexport * from './lib/index';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}