{"version":3,"file":"ngxs-reset-plugin.mjs","sources":["../../../src/lib/internals.ts","../../../src/lib/reset.service.ts","../../../src/lib/reset.handler.ts","../../../src/lib/symbols.ts","../../../src/lib/reset.plugin.ts","../../../src/lib/reset.ts","../../../src/ngxs-reset-plugin.ts"],"sourcesContent":["export interface MetaDataModel {\n  name: string | null;\n  defaults: any;\n  path: string | null;\n  children?: StateClass[];\n}\n\n/**\n * a simplified implementation of NGXS StateClass interface\n */\nexport interface StateClass<T = {}> {\n  NGXS_META?: MetaDataModel;\n\n  new (...args: any[]): T;\n}\n\nexport function noop() {\n  return () => {};\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable()\nexport class ResetService {\n  initialState: any;\n}\n","import { Injectable } from '@angular/core';\nimport { Actions, InitState, ofActionSuccessful, Store, UpdateState } from '@ngxs/store';\nimport { take } from 'rxjs/operators';\nimport { ResetService } from './reset.service';\n\n@Injectable()\nexport class ResetHandler {\n  constructor(\n    private actions$: Actions,\n    private store: Store,\n    private resetService: ResetService,\n  ) {\n    this.actions$\n      .pipe(\n        ofActionSuccessful(InitState),\n        take(1),\n      )\n      .subscribe(() => (this.resetService.initialState = this.store.snapshot()));\n\n    this.actions$.pipe(ofActionSuccessful(UpdateState)).subscribe(\n      ({ addedStates }) =>\n        (this.resetService.initialState = {\n          ...this.resetService.initialState,\n          ...addedStates,\n        }),\n    );\n  }\n}\n","import { isDevMode } from '@angular/core';\nimport { ɵgetStoreMetadata as getStoreMetadata } from '@ngxs/store/internals';\nimport { MetaDataModel, StateClass } from './internals';\n\nexport type OverwriteTuple = [StateClass, any];\ntype MetaTuple = [MetaDataModel[], any[]];\ntype MetaListReducer = (\n  acc: MetaDataModel[],\n  state: StateClass,\n) => MetaDataModel[];\ntype MetaTupleReducer = (\n  acc: MetaTuple,\n  [state, value]: OverwriteTuple,\n) => MetaTuple;\n\n/**\n * Action to clear all state except given state(s)\n */\nexport class StateClear {\n  static readonly type = '@@CLEAR_STATE';\n  public readonly statesToKeep: MetaDataModel[];\n\n  // The duplication is necessary for TypeScript\n  constructor(...statesToKeep: StateClass[]);\n  constructor();\n  constructor(...statesToKeep: StateClass[]) {\n    const reducer = createMetaDataListReducer(isDevMode());\n    this.statesToKeep = statesToKeep.reduce<MetaDataModel[]>(reducer, []);\n  }\n}\n\n/**\n * Action to reset given state(s) to defaults\n */\nexport class StateReset {\n  static readonly type = '@@RESET_STATE';\n  public readonly statesToReset: MetaDataModel[];\n  constructor(...statesToReset: StateClass[]) {\n    const reducer = createMetaDataListReducer(isDevMode());\n    this.statesToReset = statesToReset.reduce<MetaDataModel[]>(reducer, []);\n  }\n}\n\n/**\n * Action to reset all states expect given state(s) to defaults\n */\nexport class StateResetAll {\n  static readonly type = '@@RESET_STATE_ALL';\n  public readonly statesToKeep: MetaDataModel[];\n\n  // The duplication is necessary for TypeScript\n  constructor(...statesToKeep: StateClass[]);\n  constructor();\n  constructor(...statesToKeep: StateClass[]) {\n    const reducer = createMetaDataListReducer(isDevMode());\n    this.statesToKeep = statesToKeep.reduce<MetaDataModel[]>(reducer, []);\n  }\n}\n\n/**\n * Action to overwrite state(s) with given value(s)\n */\nexport class StateOverwrite {\n  static readonly type = '@@OVERWRITE_STATE';\n  public readonly statesToOverwrite: MetaDataModel[];\n  public readonly values: any[];\n  constructor(...overwriteConfigs: OverwriteTuple[]) {\n    const reducer = createMetaTupleReducer(isDevMode());\n    const [states, values] = overwriteConfigs.reduce<MetaTuple>(reducer, [\n      [],\n      [],\n    ]);\n\n    this.statesToOverwrite = states;\n    this.values = values;\n  }\n}\n\nexport function getMetaData(\n  state: StateClass,\n  devMode: number,\n): MetaDataModel | null {\n  const meta = new Object(getStoreMetadata(state as any)) as MetaDataModel;\n  const isNgxsMeta = meta.name && 'defaults' in meta;\n\n  // Reusability Hack: devMode is number on purpose\n  if (!isNgxsMeta && devMode === -2) {\n    console.warn(`Reset Plugin Warning: ${meta.name} is not a state class.`);\n    return null;\n  }\n\n  return meta;\n}\n\nfunction createMetaDataListReducer(devMode: boolean): MetaListReducer {\n  return (acc: MetaDataModel[], state: StateClass): MetaDataModel[] => {\n    // eslint-disable-next-line no-bitwise\n    const meta = getMetaData(state, ~devMode);\n\n    return meta ? acc.concat(meta) : acc;\n  };\n}\n\nfunction createMetaTupleReducer(devMode: boolean): MetaTupleReducer {\n  return (acc: MetaTuple, [state, value]: OverwriteTuple): MetaTuple => {\n    // eslint-disable-next-line no-bitwise\n    const meta = getMetaData(state, ~devMode);\n\n    return meta ? [acc[0].concat(meta), acc[1].concat(value)] : acc;\n  };\n}\n","import { Injectable } from '@angular/core';\nimport {\n  getActionTypeFromInstance,\n  getValue,\n  NgxsPlugin,\n  setValue,\n} from '@ngxs/store';\nimport { MetaDataModel } from './internals';\nimport { ResetService } from './reset.service';\nimport {\n  getMetaData,\n  StateClear,\n  StateOverwrite,\n  StateReset,\n  StateResetAll,\n} from './symbols';\n\n@Injectable()\nexport class NgxsResetPlugin implements NgxsPlugin {\n  constructor(private readonly resetService: ResetService) {}\n\n  private clearStates(state: any, statesToKeep: MetaDataModel[]): any {\n    return statesToKeep.reduce((obj, meta) => {\n      const path = getPath(meta);\n      if (!path) {\n        return obj;\n      }\n\n      const parts = path.split('.');\n      const value = getValue(state, path);\n\n      return parts.reduceRight(\n        (acc, part) =>\n          part in obj\n            ? {\n                [part]: {\n                  ...obj[part],\n                  ...acc,\n                },\n              }\n            : { [part]: acc },\n        value,\n      );\n    }, {});\n  }\n\n  private overwriteStates(\n    state: any,\n    statesToOverwrite: MetaDataModel[],\n    values: any[],\n  ): any {\n    statesToOverwrite.forEach((meta, index) => {\n      const path = getPath(meta);\n      if (!path) {\n        return;\n      }\n\n      state = setValue(state, path, values[index]);\n    });\n    return state;\n  }\n\n  private resetStates(state: any, statesToReset: MetaDataModel[]): any {\n    statesToReset.forEach((meta) => {\n      const path = getPath(meta);\n      if (!path) {\n        return;\n      }\n\n      state = setValue(\n        state,\n        path,\n        typeof meta.defaults === 'undefined' ? {} : meta.defaults,\n      );\n\n      if (meta.children) {\n        state = this.resetStates(\n          state,\n          meta.children.map(getMetaData) as MetaDataModel[],\n        );\n      }\n    });\n\n    return state;\n  }\n\n  private resetStatesAll(state: any, statesToKeep: MetaDataModel[]): any {\n    const [metas, values] = statesToKeep.reduce(\n      (acc: [MetaDataModel[], any[]], meta) => {\n        const path = getPath(meta);\n        if (!path) {\n          return acc;\n        }\n\n        acc[0].push(meta);\n        acc[1].push(getValue(state, path));\n        return acc;\n      },\n      [[], []],\n    );\n\n    return this.overwriteStates(this.resetService.initialState, metas, values);\n  }\n\n  handle(state: any, action: any, next: any) {\n    const type = getActionTypeFromInstance(action);\n\n    switch (type) {\n      case StateClear.type:\n        state = this.clearStates(state, (action as StateClear).statesToKeep);\n        break;\n\n      case StateReset.type:\n        state = this.resetStates(state, (action as StateReset).statesToReset);\n        break;\n\n      case StateResetAll.type:\n        state = this.resetStatesAll(\n          state,\n          (action as StateResetAll).statesToKeep,\n        );\n        break;\n\n      case StateOverwrite.type:\n        const { statesToOverwrite, values } = action as StateOverwrite;\n        state = this.overwriteStates(state, statesToOverwrite, values);\n        break;\n\n      default:\n        break;\n    }\n\n    return next(state, action);\n  }\n}\n\nfunction getPath(meta: MetaDataModel): string {\n  return meta.path;\n}\n","import {\n  ENVIRONMENT_INITIALIZER,\n  makeEnvironmentProviders,\n} from '@angular/core';\nimport { withNgxsPlugin } from '@ngxs/store';\nimport { noop } from './internals';\nimport { ResetHandler } from './reset.handler';\nimport { NgxsResetPlugin } from './reset.plugin';\nimport { ResetService } from './reset.service';\n\nexport function withNgxsResetPlugin() {\n  return makeEnvironmentProviders([\n    withNgxsPlugin(NgxsResetPlugin),\n    ResetService,\n    ResetHandler,\n    {\n      provide: ENVIRONMENT_INITIALIZER,\n      useFactory: noop,\n      deps: [ResetHandler],\n      multi: true,\n    },\n  ]);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i2.ResetService","getStoreMetadata","i1.ResetService"],"mappings":"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"}