@ngrx/store-devtools 6.0.1 → 7.0.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/bundles/store-devtools.umd.js +807 -604
  2. package/bundles/store-devtools.umd.js.map +1 -1
  3. package/bundles/store-devtools.umd.min.js +2 -2
  4. package/bundles/store-devtools.umd.min.js.map +1 -1
  5. package/esm2015/index.js +3 -3
  6. package/esm2015/public_api.js +3 -3
  7. package/esm2015/src/actions.js +72 -24
  8. package/esm2015/src/config.js +89 -5
  9. package/esm2015/src/devtools-dispatcher.js +13 -0
  10. package/esm2015/src/devtools.js +56 -45
  11. package/esm2015/src/extension.js +96 -78
  12. package/esm2015/src/index.js +3 -2
  13. package/esm2015/src/instrument.js +9 -48
  14. package/esm2015/src/reducer.js +190 -106
  15. package/esm2015/src/utils.js +56 -3
  16. package/esm2015/store-devtools.js +5 -5
  17. package/esm5/index.js +1 -1
  18. package/esm5/src/actions.js +19 -1
  19. package/esm5/src/config.js +40 -1
  20. package/esm5/src/devtools-dispatcher.js +34 -0
  21. package/esm5/src/devtools.js +39 -38
  22. package/esm5/src/extension.js +69 -32
  23. package/esm5/src/index.js +2 -1
  24. package/esm5/src/instrument.js +16 -33
  25. package/esm5/src/reducer.js +259 -194
  26. package/esm5/src/utils.js +50 -14
  27. package/esm5/store-devtools.js +5 -5
  28. package/fesm2015/store-devtools.js +425 -201
  29. package/fesm2015/store-devtools.js.map +1 -1
  30. package/fesm5/store-devtools.js +509 -307
  31. package/fesm5/store-devtools.js.map +1 -1
  32. package/migrations/6_0_0/index.js +3 -3
  33. package/package.json +4 -3
  34. package/schematics/collection.json +10 -0
  35. package/schematics/ng-add/index.d.ts +4 -0
  36. package/schematics/ng-add/index.js +119 -0
  37. package/schematics/ng-add/schema.d.ts +8 -0
  38. package/schematics/ng-add/schema.js +13 -0
  39. package/schematics/ng-add/schema.json +34 -0
  40. package/schematics-core/index.d.ts +6 -6
  41. package/schematics-core/index.js +5 -3
  42. package/schematics-core/utility/ast-utils.js +13 -11
  43. package/schematics-core/utility/change.js +1 -1
  44. package/schematics-core/utility/config.js +1 -1
  45. package/schematics-core/utility/find-module.js +2 -2
  46. package/schematics-core/utility/ngrx-utils.d.ts +1 -1
  47. package/schematics-core/utility/ngrx-utils.js +12 -12
  48. package/schematics-core/utility/package.js +1 -1
  49. package/schematics-core/utility/parse-name.js +1 -1
  50. package/schematics-core/utility/project.d.ts +12 -0
  51. package/schematics-core/utility/project.js +12 -3
  52. package/schematics-core/utility/route-utils.js +1 -1
  53. package/schematics-core/utility/strings.js +1 -1
  54. package/schematics-core/utility/update.js +1 -1
  55. package/src/actions.d.ts +24 -12
  56. package/src/config.d.ts +15 -1
  57. package/src/devtools-dispatcher.d.ts +3 -0
  58. package/src/devtools.d.ts +3 -2
  59. package/src/extension.d.ts +10 -10
  60. package/src/index.d.ts +1 -1
  61. package/src/instrument.d.ts +1 -4
  62. package/src/reducer.d.ts +8 -2
  63. package/src/utils.d.ts +13 -1
  64. package/store-devtools.d.ts +4 -4
  65. package/store-devtools.metadata.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"store-devtools.umd.js","sources":["../../../../../../../../../execroot/ngrx/bazel-out/darwin-fastbuild/bin/modules/store-devtools/npm_package.esm5/modules/store-devtools/src/config.js","../../../../../../../../../execroot/ngrx/bazel-out/darwin-fastbuild/bin/modules/store-devtools/npm_package.esm5/modules/store-devtools/src/actions.js","../../../../../../../../../execroot/ngrx/bazel-out/darwin-fastbuild/bin/modules/store-devtools/npm_package.esm5/modules/store-devtools/src/utils.js","../../../../../../../../../execroot/ngrx/bazel-out/darwin-fastbuild/bin/modules/store-devtools/npm_package.esm5/modules/store-devtools/src/extension.js","../../../../../../../../../execroot/ngrx/bazel-out/darwin-fastbuild/bin/modules/store-devtools/npm_package.esm5/modules/store-devtools/src/reducer.js","../../../../../../../../../execroot/ngrx/bazel-out/darwin-fastbuild/bin/modules/store-devtools/npm_package.esm5/modules/store-devtools/src/devtools.js","../../../../../../../../../execroot/ngrx/bazel-out/darwin-fastbuild/bin/modules/store-devtools/npm_package.esm5/modules/store-devtools/src/instrument.js","../../../../../../../../../execroot/ngrx/bazel-out/darwin-fastbuild/bin/modules/store-devtools/npm_package.esm5/modules/store-devtools/index.js","../../../../../../../../../execroot/ngrx/bazel-out/darwin-fastbuild/bin/modules/store-devtools/npm_package.esm5/modules/store-devtools/store-devtools.js"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nvar StoreDevtoolsConfig = /** @class */ (function () {\n function StoreDevtoolsConfig() {\n }\n return StoreDevtoolsConfig;\n}());\nexport { StoreDevtoolsConfig };\nexport var STORE_DEVTOOLS_CONFIG = new InjectionToken('@ngrx/devtools Options');\nexport var INITIAL_OPTIONS = new InjectionToken('@ngrx/devtools Initial Config');\n\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9zdG9yZS1kZXZ0b29scy9zcmMvY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxjQUFjLEVBQVEsTUFBTSxlQUFlLENBQUM7QUFLckQsSUFBQTs7OzhCQU5BO0lBZUMsQ0FBQTtBQVRELCtCQVNDO0FBRUQsTUFBTSxDQUFDLElBQU0scUJBQXFCLEdBQUcsSUFBSSxjQUFjLENBQ3JELHdCQUF3QixDQUN6QixDQUFDO0FBQ0YsTUFBTSxDQUFDLElBQU0sZUFBZSxHQUFHLElBQUksY0FBYyxDQUMvQywrQkFBK0IsQ0FDaEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFjdGlvblJlZHVjZXIsIEFjdGlvbiB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IEluamVjdGlvblRva2VuLCBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCB0eXBlIEFjdGlvblNhbml0aXplciA9IChhY3Rpb246IEFjdGlvbiwgaWQ6IG51bWJlcikgPT4gQWN0aW9uO1xuZXhwb3J0IHR5cGUgU3RhdGVTYW5pdGl6ZXIgPSAoc3RhdGU6IGFueSwgaW5kZXg6IG51bWJlcikgPT4gYW55O1xuXG5leHBvcnQgY2xhc3MgU3RvcmVEZXZ0b29sc0NvbmZpZyB7XG4gIG1heEFnZTogbnVtYmVyIHwgZmFsc2U7XG4gIG1vbml0b3I6IEFjdGlvblJlZHVjZXI8YW55LCBhbnk+O1xuICBhY3Rpb25TYW5pdGl6ZXI/OiBBY3Rpb25TYW5pdGl6ZXI7XG4gIHN0YXRlU2FuaXRpemVyPzogU3RhdGVTYW5pdGl6ZXI7XG4gIG5hbWU/OiBzdHJpbmc7XG4gIHNlcmlhbGl6ZT86IGJvb2xlYW47XG4gIGxvZ09ubHk/OiBib29sZWFuO1xuICBmZWF0dXJlcz86IGFueTtcbn1cblxuZXhwb3J0IGNvbnN0IFNUT1JFX0RFVlRPT0xTX0NPTkZJRyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxTdG9yZURldnRvb2xzQ29uZmlnPihcbiAgJ0BuZ3J4L2RldnRvb2xzIE9wdGlvbnMnXG4pO1xuZXhwb3J0IGNvbnN0IElOSVRJQUxfT1BUSU9OUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxTdG9yZURldnRvb2xzQ29uZmlnPihcbiAgJ0BuZ3J4L2RldnRvb2xzIEluaXRpYWwgQ29uZmlnJ1xuKTtcblxuZXhwb3J0IHR5cGUgU3RvcmVEZXZ0b29sc09wdGlvbnMgPVxuICB8IFBhcnRpYWw8U3RvcmVEZXZ0b29sc0NvbmZpZz5cbiAgfCAoKCkgPT4gUGFydGlhbDxTdG9yZURldnRvb2xzQ29uZmlnPik7XG4iXX0=","export var PERFORM_ACTION = 'PERFORM_ACTION';\nexport var REFRESH = 'REFRESH';\nexport var RESET = 'RESET';\nexport var ROLLBACK = 'ROLLBACK';\nexport var COMMIT = 'COMMIT';\nexport var SWEEP = 'SWEEP';\nexport var TOGGLE_ACTION = 'TOGGLE_ACTION';\nexport var SET_ACTIONS_ACTIVE = 'SET_ACTIONS_ACTIVE';\nexport var JUMP_TO_STATE = 'JUMP_TO_STATE';\nexport var JUMP_TO_ACTION = 'JUMP_TO_ACTION';\nexport var IMPORT_STATE = 'IMPORT_STATE';\nvar PerformAction = /** @class */ (function () {\n function PerformAction(action, timestamp) {\n this.action = action;\n this.timestamp = timestamp;\n this.type = PERFORM_ACTION;\n if (typeof action.type === 'undefined') {\n throw new Error('Actions may not have an undefined \"type\" property. ' +\n 'Have you misspelled a constant?');\n }\n }\n return PerformAction;\n}());\nexport { PerformAction };\nvar Refresh = /** @class */ (function () {\n function Refresh() {\n this.type = REFRESH;\n }\n return Refresh;\n}());\nexport { Refresh };\nvar Reset = /** @class */ (function () {\n function Reset(timestamp) {\n this.timestamp = timestamp;\n this.type = RESET;\n }\n return Reset;\n}());\nexport { Reset };\nvar Rollback = /** @class */ (function () {\n function Rollback(timestamp) {\n this.timestamp = timestamp;\n this.type = ROLLBACK;\n }\n return Rollback;\n}());\nexport { Rollback };\nvar Commit = /** @class */ (function () {\n function Commit(timestamp) {\n this.timestamp = timestamp;\n this.type = COMMIT;\n }\n return Commit;\n}());\nexport { Commit };\nvar Sweep = /** @class */ (function () {\n function Sweep() {\n this.type = SWEEP;\n }\n return Sweep;\n}());\nexport { Sweep };\nvar ToggleAction = /** @class */ (function () {\n function ToggleAction(id) {\n this.id = id;\n this.type = TOGGLE_ACTION;\n }\n return ToggleAction;\n}());\nexport { ToggleAction };\nvar SetActionsActive = /** @class */ (function () {\n function SetActionsActive(start, end, active) {\n if (active === void 0) { active = true; }\n this.start = start;\n this.end = end;\n this.active = active;\n this.type = SET_ACTIONS_ACTIVE;\n }\n return SetActionsActive;\n}());\nexport { SetActionsActive };\nvar JumpToState = /** @class */ (function () {\n function JumpToState(index) {\n this.index = index;\n this.type = JUMP_TO_STATE;\n }\n return JumpToState;\n}());\nexport { JumpToState };\nvar JumpToAction = /** @class */ (function () {\n function JumpToAction(actionId) {\n this.actionId = actionId;\n this.type = JUMP_TO_ACTION;\n }\n return JumpToAction;\n}());\nexport { JumpToAction };\nvar ImportState = /** @class */ (function () {\n function ImportState(nextLiftedState) {\n this.nextLiftedState = nextLiftedState;\n this.type = IMPORT_STATE;\n }\n return ImportState;\n}());\nexport { ImportState };\n\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL21vZHVsZXMvc3RvcmUtZGV2dG9vbHMvc3JjL2FjdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxDQUFDLElBQU0sY0FBYyxHQUFHLGdCQUFnQixDQUFDO0FBQy9DLE1BQU0sQ0FBQyxJQUFNLE9BQU8sR0FBRyxTQUFTLENBQUM7QUFDakMsTUFBTSxDQUFDLElBQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQztBQUM3QixNQUFNLENBQUMsSUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDO0FBQ25DLE1BQU0sQ0FBQyxJQUFNLE1BQU0sR0FBRyxRQUFRLENBQUM7QUFDL0IsTUFBTSxDQUFDLElBQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQztBQUM3QixNQUFNLENBQUMsSUFBTSxhQUFhLEdBQUcsZUFBZSxDQUFDO0FBQzdDLE1BQU0sQ0FBQyxJQUFNLGtCQUFrQixHQUFHLG9CQUFvQixDQUFDO0FBQ3ZELE1BQU0sQ0FBQyxJQUFNLGFBQWEsR0FBRyxlQUFlLENBQUM7QUFDN0MsTUFBTSxDQUFDLElBQU0sY0FBYyxHQUFHLGdCQUFnQixDQUFDO0FBQy9DLE1BQU0sQ0FBQyxJQUFNLFlBQVksR0FBRyxjQUFjLENBQUM7QUFFM0MsSUFBQTtJQUdFLHVCQUFtQixNQUFjLEVBQVMsU0FBaUI7UUFBeEMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUFTLGNBQVMsR0FBVCxTQUFTLENBQVE7b0JBRjNDLGNBQWM7UUFHNUIsRUFBRSxDQUFDLENBQUMsT0FBTyxNQUFNLENBQUMsSUFBSSxLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUM7WUFDdkMsTUFBTSxJQUFJLEtBQUssQ0FDYixxREFBcUQ7Z0JBQ25ELGlDQUFpQyxDQUNwQyxDQUFDO1NBQ0g7S0FDRjt3QkF4Qkg7SUF5QkMsQ0FBQTtBQVhELHlCQVdDO0FBRUQsSUFBQTs7b0JBQ2tCLE9BQU87O2tCQTVCekI7SUE2QkMsQ0FBQTtBQUZELG1CQUVDO0FBRUQsSUFBQTtJQUdFLGVBQW1CLFNBQWlCO1FBQWpCLGNBQVMsR0FBVCxTQUFTLENBQVE7b0JBRnBCLEtBQUs7S0FFbUI7Z0JBbEMxQztJQW1DQyxDQUFBO0FBSkQsaUJBSUM7QUFFRCxJQUFBO0lBR0Usa0JBQW1CLFNBQWlCO1FBQWpCLGNBQVMsR0FBVCxTQUFTLENBQVE7b0JBRnBCLFFBQVE7S0FFZ0I7bUJBeEMxQztJQXlDQyxDQUFBO0FBSkQsb0JBSUM7QUFFRCxJQUFBO0lBR0UsZ0JBQW1CLFNBQWlCO1FBQWpCLGNBQVMsR0FBVCxTQUFTLENBQVE7b0JBRnBCLE1BQU07S0FFa0I7aUJBOUMxQztJQStDQyxDQUFBO0FBSkQsa0JBSUM7QUFFRCxJQUFBOztvQkFDa0IsS0FBSzs7Z0JBbER2QjtJQW1EQyxDQUFBO0FBRkQsaUJBRUM7QUFFRCxJQUFBO0lBR0Usc0JBQW1CLEVBQVU7UUFBVixPQUFFLEdBQUYsRUFBRSxDQUFRO29CQUZiLGFBQWE7S0FFSTt1QkF4RG5DO0lBeURDLENBQUE7QUFKRCx3QkFJQztBQUVELElBQUE7SUFHRSwwQkFDUyxLQUFhLEVBQ2IsR0FBVyxFQUNYLE1BQXNCOzhDQUFBO1FBRnRCLFVBQUssR0FBTCxLQUFLLENBQVE7UUFDYixRQUFHLEdBQUgsR0FBRyxDQUFRO1FBQ1gsV0FBTSxHQUFOLE1BQU0sQ0FBZ0I7b0JBTGYsa0JBQWtCO0tBTTlCOzJCQWxFTjtJQW1FQyxDQUFBO0FBUkQsNEJBUUM7QUFFRCxJQUFBO0lBR0UscUJBQW1CLEtBQWE7UUFBYixVQUFLLEdBQUwsS0FBSyxDQUFRO29CQUZoQixhQUFhO0tBRU87c0JBeEV0QztJQXlFQyxDQUFBO0FBSkQsdUJBSUM7QUFFRCxJQUFBO0lBR0Usc0JBQW1CLFFBQWdCO1FBQWhCLGFBQVEsR0FBUixRQUFRLENBQVE7b0JBRm5CLGNBQWM7S0FFUzt1QkE5RXpDO0lBK0VDLENBQUE7QUFKRCx3QkFJQztBQUVELElBQUE7SUFHRSxxQkFBbUIsZUFBb0I7UUFBcEIsb0JBQWUsR0FBZixlQUFlLENBQUs7b0JBRnZCLFlBQVk7S0FFZTtzQkFwRjdDO0lBcUZDLENBQUE7QUFKRCx1QkFJQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFjdGlvbiB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcblxuZXhwb3J0IGNvbnN0IFBFUkZPUk1fQUNUSU9OID0gJ1BFUkZPUk1fQUNUSU9OJztcbmV4cG9ydCBjb25zdCBSRUZSRVNIID0gJ1JFRlJFU0gnO1xuZXhwb3J0IGNvbnN0IFJFU0VUID0gJ1JFU0VUJztcbmV4cG9ydCBjb25zdCBST0xMQkFDSyA9ICdST0xMQkFDSyc7XG5leHBvcnQgY29uc3QgQ09NTUlUID0gJ0NPTU1JVCc7XG5leHBvcnQgY29uc3QgU1dFRVAgPSAnU1dFRVAnO1xuZXhwb3J0IGNvbnN0IFRPR0dMRV9BQ1RJT04gPSAnVE9HR0xFX0FDVElPTic7XG5leHBvcnQgY29uc3QgU0VUX0FDVElPTlNfQUNUSVZFID0gJ1NFVF9BQ1RJT05TX0FDVElWRSc7XG5leHBvcnQgY29uc3QgSlVNUF9UT19TVEFURSA9ICdKVU1QX1RPX1NUQVRFJztcbmV4cG9ydCBjb25zdCBKVU1QX1RPX0FDVElPTiA9ICdKVU1QX1RPX0FDVElPTic7XG5leHBvcnQgY29uc3QgSU1QT1JUX1NUQVRFID0gJ0lNUE9SVF9TVEFURSc7XG5cbmV4cG9ydCBjbGFzcyBQZXJmb3JtQWN0aW9uIGltcGxlbWVudHMgQWN0aW9uIHtcbiAgcmVhZG9ubHkgdHlwZSA9IFBFUkZPUk1fQUNUSU9OO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBhY3Rpb246IEFjdGlvbiwgcHVibGljIHRpbWVzdGFtcDogbnVtYmVyKSB7XG4gICAgaWYgKHR5cGVvZiBhY3Rpb24udHlwZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ0FjdGlvbnMgbWF5IG5vdCBoYXZlIGFuIHVuZGVmaW5lZCBcInR5cGVcIiBwcm9wZXJ0eS4gJyArXG4gICAgICAgICAgJ0hhdmUgeW91IG1pc3NwZWxsZWQgYSBjb25zdGFudD8nXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUmVmcmVzaCBpbXBsZW1lbnRzIEFjdGlvbiB7XG4gIHJlYWRvbmx5IHR5cGUgPSBSRUZSRVNIO1xufVxuXG5leHBvcnQgY2xhc3MgUmVzZXQgaW1wbGVtZW50cyBBY3Rpb24ge1xuICByZWFkb25seSB0eXBlID0gUkVTRVQ7XG5cbiAgY29uc3RydWN0b3IocHVibGljIHRpbWVzdGFtcDogbnVtYmVyKSB7fVxufVxuXG5leHBvcnQgY2xhc3MgUm9sbGJhY2sgaW1wbGVtZW50cyBBY3Rpb24ge1xuICByZWFkb25seSB0eXBlID0gUk9MTEJBQ0s7XG5cbiAgY29uc3RydWN0b3IocHVibGljIHRpbWVzdGFtcDogbnVtYmVyKSB7fVxufVxuXG5leHBvcnQgY2xhc3MgQ29tbWl0IGltcGxlbWVudHMgQWN0aW9uIHtcbiAgcmVhZG9ubHkgdHlwZSA9IENPTU1JVDtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgdGltZXN0YW1wOiBudW1iZXIpIHt9XG59XG5cbmV4cG9ydCBjbGFzcyBTd2VlcCBpbXBsZW1lbnRzIEFjdGlvbiB7XG4gIHJlYWRvbmx5IHR5cGUgPSBTV0VFUDtcbn1cblxuZXhwb3J0IGNsYXNzIFRvZ2dsZUFjdGlvbiBpbXBsZW1lbnRzIEFjdGlvbiB7XG4gIHJlYWRvbmx5IHR5cGUgPSBUT0dHTEVfQUNUSU9OO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBpZDogbnVtYmVyKSB7fVxufVxuXG5leHBvcnQgY2xhc3MgU2V0QWN0aW9uc0FjdGl2ZSBpbXBsZW1lbnRzIEFjdGlvbiB7XG4gIHJlYWRvbmx5IHR5cGUgPSBTRVRfQUNUSU9OU19BQ1RJVkU7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHN0YXJ0OiBudW1iZXIsXG4gICAgcHVibGljIGVuZDogbnVtYmVyLFxuICAgIHB1YmxpYyBhY3RpdmU6IGJvb2xlYW4gPSB0cnVlXG4gICkge31cbn1cblxuZXhwb3J0IGNsYXNzIEp1bXBUb1N0YXRlIGltcGxlbWVudHMgQWN0aW9uIHtcbiAgcmVhZG9ubHkgdHlwZSA9IEpVTVBfVE9fU1RBVEU7XG5cbiAgY29uc3RydWN0b3IocHVibGljIGluZGV4OiBudW1iZXIpIHt9XG59XG5cbmV4cG9ydCBjbGFzcyBKdW1wVG9BY3Rpb24gaW1wbGVtZW50cyBBY3Rpb24ge1xuICByZWFkb25seSB0eXBlID0gSlVNUF9UT19BQ1RJT047XG5cbiAgY29uc3RydWN0b3IocHVibGljIGFjdGlvbklkOiBudW1iZXIpIHt9XG59XG5cbmV4cG9ydCBjbGFzcyBJbXBvcnRTdGF0ZSBpbXBsZW1lbnRzIEFjdGlvbiB7XG4gIHJlYWRvbmx5IHR5cGUgPSBJTVBPUlRfU1RBVEU7XG5cbiAgY29uc3RydWN0b3IocHVibGljIG5leHRMaWZ0ZWRTdGF0ZTogYW55KSB7fVxufVxuXG5leHBvcnQgdHlwZSBBbGwgPVxuICB8IFBlcmZvcm1BY3Rpb25cbiAgfCBSZWZyZXNoXG4gIHwgUmVzZXRcbiAgfCBSb2xsYmFja1xuICB8IENvbW1pdFxuICB8IFN3ZWVwXG4gIHwgVG9nZ2xlQWN0aW9uXG4gIHwgU2V0QWN0aW9uc0FjdGl2ZVxuICB8IEp1bXBUb1N0YXRlXG4gIHwgSnVtcFRvQWN0aW9uXG4gIHwgSW1wb3J0U3RhdGU7XG4iXX0=","var __assign = (this && this.__assign) || Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n};\nimport * as Actions from './actions';\nexport function difference(first, second) {\n return first.filter(function (item) { return second.indexOf(item) < 0; });\n}\n/**\n * Provides an app's view into the state of the lifted store.\n */\nexport function unliftState(liftedState) {\n var computedStates = liftedState.computedStates, currentStateIndex = liftedState.currentStateIndex;\n var state = computedStates[currentStateIndex].state;\n return state;\n}\nexport function unliftAction(liftedState) {\n return liftedState.actionsById[liftedState.nextActionId - 1];\n}\n/**\n * Lifts an app's action into an action on the lifted store.\n */\nexport function liftAction(action) {\n return new Actions.PerformAction(action, +Date.now());\n}\n/**\n * Sanitizes given actions with given function.\n */\nexport function sanitizeActions(actionSanitizer, actions) {\n return Object.keys(actions).reduce(function (sanitizedActions, actionIdx) {\n var idx = Number(actionIdx);\n sanitizedActions[idx] = sanitizeAction(actionSanitizer, actions[idx], idx);\n return sanitizedActions;\n }, {});\n}\n/**\n * Sanitizes given action with given function.\n */\nexport function sanitizeAction(actionSanitizer, action, actionIdx) {\n return __assign({}, action, { action: actionSanitizer(action.action, actionIdx) });\n}\n/**\n * Sanitizes given states with given function.\n */\nexport function sanitizeStates(stateSanitizer, states) {\n return states.map(function (computedState, idx) {\n return ({\n state: sanitizeState(stateSanitizer, computedState.state, idx),\n error: computedState.error,\n });\n });\n}\n/**\n * Sanitizes given state with given function.\n */\nexport function sanitizeState(stateSanitizer, state, stateIdx) {\n return stateSanitizer(state, stateIdx);\n}\n\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9tb2R1bGVzL3N0b3JlLWRldnRvb2xzL3NyYy91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUdBLE9BQU8sS0FBSyxPQUFPLE1BQU0sV0FBVyxDQUFDO0FBU3JDLE1BQU0scUJBQXFCLEtBQVksRUFBRSxNQUFhO0lBQ3BELE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFVBQUEsSUFBSSxJQUFJLE9BQUEsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQXhCLENBQXdCLENBQUMsQ0FBQztDQUN2RDs7OztBQUtELE1BQU0sc0JBQXNCLFdBQXdCO0lBQzFDLElBQUEsMkNBQWMsRUFBRSxpREFBaUIsQ0FBaUI7SUFDbEQsSUFBQSwrQ0FBSyxDQUF1QztJQUVwRCxNQUFNLENBQUMsS0FBSyxDQUFDO0NBQ2Q7QUFFRCxNQUFNLHVCQUF1QixXQUF3QjtJQUNuRCxNQUFNLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxDQUFDO0NBQzlEOzs7O0FBS0QsTUFBTSxxQkFBcUIsTUFBYztJQUN2QyxNQUFNLENBQUMsSUFBSSxPQUFPLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0NBQ3ZEOzs7O0FBS0QsTUFBTSwwQkFDSixlQUFnQyxFQUNoQyxPQUFzQjtJQUV0QixNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQ2hDLFVBQUMsZ0JBQWdCLEVBQUUsU0FBUztRQUMxQixJQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDOUIsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEdBQUcsY0FBYyxDQUNwQyxlQUFlLEVBQ2YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUNaLEdBQUcsQ0FDSixDQUFDO1FBQ0YsTUFBTSxDQUFDLGdCQUFnQixDQUFDO0tBQ3pCLEVBQ2MsRUFBRSxDQUNsQixDQUFDO0NBQ0g7Ozs7QUFLRCxNQUFNLHlCQUNKLGVBQWdDLEVBQ2hDLE1BQW9CLEVBQ3BCLFNBQWlCO0lBRWpCLE1BQU0sY0FDRCxNQUFNLElBQ1QsTUFBTSxFQUFFLGVBQWUsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxJQUNqRDtDQUNIOzs7O0FBS0QsTUFBTSx5QkFDSixjQUE4QixFQUM5QixNQUF1QjtJQUV2QixNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxVQUFDLGFBQWEsRUFBRSxHQUFHO1FBQUssT0FBQSxDQUFDO1lBQ3pDLEtBQUssRUFBRSxhQUFhLENBQUMsY0FBYyxFQUFFLGFBQWEsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDO1lBQzlELEtBQUssRUFBRSxhQUFhLENBQUMsS0FBSztTQUMzQixDQUFDO0lBSHdDLENBR3hDLENBQUMsQ0FBQztDQUNMOzs7O0FBS0QsTUFBTSx3QkFDSixjQUE4QixFQUM5QixLQUFVLEVBQ1YsUUFBZ0I7SUFFaEIsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7Q0FDeEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBY3Rpb24gfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCAqIGFzIEFjdGlvbnMgZnJvbSAnLi9hY3Rpb25zJztcbmltcG9ydCB7IEFjdGlvblNhbml0aXplciwgU3RhdGVTYW5pdGl6ZXIgfSBmcm9tICcuL2NvbmZpZyc7XG5pbXBvcnQge1xuICBDb21wdXRlZFN0YXRlLFxuICBMaWZ0ZWRBY3Rpb24sXG4gIExpZnRlZEFjdGlvbnMsXG4gIExpZnRlZFN0YXRlLFxufSBmcm9tICcuL3JlZHVjZXInO1xuXG5leHBvcnQgZnVuY3Rpb24gZGlmZmVyZW5jZShmaXJzdDogYW55W10sIHNlY29uZDogYW55W10pIHtcbiAgcmV0dXJuIGZpcnN0LmZpbHRlcihpdGVtID0+IHNlY29uZC5pbmRleE9mKGl0ZW0pIDwgMCk7XG59XG5cbi8qKlxuICogUHJvdmlkZXMgYW4gYXBwJ3MgdmlldyBpbnRvIHRoZSBzdGF0ZSBvZiB0aGUgbGlmdGVkIHN0b3JlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdW5saWZ0U3RhdGUobGlmdGVkU3RhdGU6IExpZnRlZFN0YXRlKSB7XG4gIGNvbnN0IHsgY29tcHV0ZWRTdGF0ZXMsIGN1cnJlbnRTdGF0ZUluZGV4IH0gPSBsaWZ0ZWRTdGF0ZTtcbiAgY29uc3QgeyBzdGF0ZSB9ID0gY29tcHV0ZWRTdGF0ZXNbY3VycmVudFN0YXRlSW5kZXhdO1xuXG4gIHJldHVybiBzdGF0ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVubGlmdEFjdGlvbihsaWZ0ZWRTdGF0ZTogTGlmdGVkU3RhdGUpOiBMaWZ0ZWRBY3Rpb24ge1xuICByZXR1cm4gbGlmdGVkU3RhdGUuYWN0aW9uc0J5SWRbbGlmdGVkU3RhdGUubmV4dEFjdGlvbklkIC0gMV07XG59XG5cbi8qKlxuICogTGlmdHMgYW4gYXBwJ3MgYWN0aW9uIGludG8gYW4gYWN0aW9uIG9uIHRoZSBsaWZ0ZWQgc3RvcmUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsaWZ0QWN0aW9uKGFjdGlvbjogQWN0aW9uKSB7XG4gIHJldHVybiBuZXcgQWN0aW9ucy5QZXJmb3JtQWN0aW9uKGFjdGlvbiwgK0RhdGUubm93KCkpO1xufVxuXG4vKipcbiAqIFNhbml0aXplcyBnaXZlbiBhY3Rpb25zIHdpdGggZ2l2ZW4gZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzYW5pdGl6ZUFjdGlvbnMoXG4gIGFjdGlvblNhbml0aXplcjogQWN0aW9uU2FuaXRpemVyLFxuICBhY3Rpb25zOiBMaWZ0ZWRBY3Rpb25zXG4pOiBMaWZ0ZWRBY3Rpb25zIHtcbiAgcmV0dXJuIE9iamVjdC5rZXlzKGFjdGlvbnMpLnJlZHVjZShcbiAgICAoc2FuaXRpemVkQWN0aW9ucywgYWN0aW9uSWR4KSA9PiB7XG4gICAgICBjb25zdCBpZHggPSBOdW1iZXIoYWN0aW9uSWR4KTtcbiAgICAgIHNhbml0aXplZEFjdGlvbnNbaWR4XSA9IHNhbml0aXplQWN0aW9uKFxuICAgICAgICBhY3Rpb25TYW5pdGl6ZXIsXG4gICAgICAgIGFjdGlvbnNbaWR4XSxcbiAgICAgICAgaWR4XG4gICAgICApO1xuICAgICAgcmV0dXJuIHNhbml0aXplZEFjdGlvbnM7XG4gICAgfSxcbiAgICA8TGlmdGVkQWN0aW9ucz57fVxuICApO1xufVxuXG4vKipcbiAqIFNhbml0aXplcyBnaXZlbiBhY3Rpb24gd2l0aCBnaXZlbiBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNhbml0aXplQWN0aW9uKFxuICBhY3Rpb25TYW5pdGl6ZXI6IEFjdGlvblNhbml0aXplcixcbiAgYWN0aW9uOiBMaWZ0ZWRBY3Rpb24sXG4gIGFjdGlvbklkeDogbnVtYmVyXG4pOiBMaWZ0ZWRBY3Rpb24ge1xuICByZXR1cm4ge1xuICAgIC4uLmFjdGlvbixcbiAgICBhY3Rpb246IGFjdGlvblNhbml0aXplcihhY3Rpb24uYWN0aW9uLCBhY3Rpb25JZHgpLFxuICB9O1xufVxuXG4vKipcbiAqIFNhbml0aXplcyBnaXZlbiBzdGF0ZXMgd2l0aCBnaXZlbiBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNhbml0aXplU3RhdGVzKFxuICBzdGF0ZVNhbml0aXplcjogU3RhdGVTYW5pdGl6ZXIsXG4gIHN0YXRlczogQ29tcHV0ZWRTdGF0ZVtdXG4pOiBDb21wdXRlZFN0YXRlW10ge1xuICByZXR1cm4gc3RhdGVzLm1hcCgoY29tcHV0ZWRTdGF0ZSwgaWR4KSA9PiAoe1xuICAgIHN0YXRlOiBzYW5pdGl6ZVN0YXRlKHN0YXRlU2FuaXRpemVyLCBjb21wdXRlZFN0YXRlLnN0YXRlLCBpZHgpLFxuICAgIGVycm9yOiBjb21wdXRlZFN0YXRlLmVycm9yLFxuICB9KSk7XG59XG5cbi8qKlxuICogU2FuaXRpemVzIGdpdmVuIHN0YXRlIHdpdGggZ2l2ZW4gZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzYW5pdGl6ZVN0YXRlKFxuICBzdGF0ZVNhbml0aXplcjogU3RhdGVTYW5pdGl6ZXIsXG4gIHN0YXRlOiBhbnksXG4gIHN0YXRlSWR4OiBudW1iZXJcbikge1xuICByZXR1cm4gc3RhdGVTYW5pdGl6ZXIoc3RhdGUsIHN0YXRlSWR4KTtcbn1cbiJdfQ==","var __assign = (this && this.__assign) || Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n};\nimport { Inject, Injectable, InjectionToken } from '@angular/core';\nimport { empty, Observable } from 'rxjs';\nimport { filter, map, share, switchMap, takeUntil } from 'rxjs/operators';\nimport { PERFORM_ACTION } from './actions';\nimport { STORE_DEVTOOLS_CONFIG, StoreDevtoolsConfig } from './config';\nimport { sanitizeAction, sanitizeActions, sanitizeState, sanitizeStates, unliftState, } from './utils';\nexport var ExtensionActionTypes = {\n START: 'START',\n DISPATCH: 'DISPATCH',\n STOP: 'STOP',\n ACTION: 'ACTION',\n};\nexport var REDUX_DEVTOOLS_EXTENSION = new InjectionToken('Redux Devtools Extension');\nvar DevtoolsExtension = /** @class */ (function () {\n function DevtoolsExtension(devtoolsExtension, config) {\n this.config = config;\n this.instanceId = \"ngrx-store-\" + Date.now();\n this.devtoolsExtension = devtoolsExtension;\n this.createActionStreams();\n }\n DevtoolsExtension.prototype.notify = function (action, state) {\n if (!this.devtoolsExtension) {\n return;\n }\n // Check to see if the action requires a full update of the liftedState.\n // If it is a simple action generated by the user's app, only send the\n // action and the current state (fast).\n //\n // A full liftedState update (slow: serializes the entire liftedState) is\n // only required when:\n // a) redux-devtools-extension fires the @@Init action (ignored by\n // @ngrx/store-devtools)\n // b) an action is generated by an @ngrx module (e.g. @ngrx/effects/init\n // or @ngrx/store/update-reducers)\n // c) the state has been recomputed due to time-traveling\n // d) any action that is not a PerformAction to err on the side of\n // caution.\n if (action.type === PERFORM_ACTION) {\n var currentState = unliftState(state);\n var sanitizedState = this.config.stateSanitizer\n ? sanitizeState(this.config.stateSanitizer, currentState, state.currentStateIndex)\n : currentState;\n var sanitizedAction = this.config.actionSanitizer\n ? sanitizeAction(this.config.actionSanitizer, action, state.nextActionId)\n : action;\n this.extensionConnection.send(sanitizedAction, sanitizedState);\n }\n else {\n // Requires full state update\n var sanitizedLiftedState = __assign({}, state, { actionsById: this.config.actionSanitizer\n ? sanitizeActions(this.config.actionSanitizer, state.actionsById)\n : state.actionsById, computedStates: this.config.stateSanitizer\n ? sanitizeStates(this.config.stateSanitizer, state.computedStates)\n : state.computedStates });\n this.devtoolsExtension.send(null, sanitizedLiftedState, this.getExtensionConfig(this.instanceId, this.config), this.instanceId);\n }\n };\n DevtoolsExtension.prototype.createChangesObservable = function () {\n var _this = this;\n if (!this.devtoolsExtension) {\n return empty();\n }\n return new Observable(function (subscriber) {\n var connection = _this.devtoolsExtension.connect(_this.getExtensionConfig(_this.instanceId, _this.config));\n _this.extensionConnection = connection;\n connection.init();\n connection.subscribe(function (change) { return subscriber.next(change); });\n return connection.unsubscribe;\n });\n };\n DevtoolsExtension.prototype.createActionStreams = function () {\n var _this = this;\n // Listens to all changes based on our instanceId\n var changes$ = this.createChangesObservable().pipe(share());\n // Listen for the start action\n var start$ = changes$.pipe(filter(function (change) { return change.type === ExtensionActionTypes.START; }));\n // Listen for the stop action\n var stop$ = changes$.pipe(filter(function (change) { return change.type === ExtensionActionTypes.STOP; }));\n // Listen for lifted actions\n var liftedActions$ = changes$.pipe(filter(function (change) { return change.type === ExtensionActionTypes.DISPATCH; }), map(function (change) { return _this.unwrapAction(change.payload); }));\n // Listen for unlifted actions\n var actions$ = changes$.pipe(filter(function (change) { return change.type === ExtensionActionTypes.ACTION; }), map(function (change) { return _this.unwrapAction(change.payload); }));\n var actionsUntilStop$ = actions$.pipe(takeUntil(stop$));\n var liftedUntilStop$ = liftedActions$.pipe(takeUntil(stop$));\n this.start$ = start$.pipe(takeUntil(stop$));\n // Only take the action sources between the start/stop events\n this.actions$ = this.start$.pipe(switchMap(function () { return actionsUntilStop$; }));\n this.liftedActions$ = this.start$.pipe(switchMap(function () { return liftedUntilStop$; }));\n };\n DevtoolsExtension.prototype.unwrapAction = function (action) {\n return typeof action === 'string' ? eval(\"(\" + action + \")\") : action;\n };\n DevtoolsExtension.prototype.getExtensionConfig = function (instanceId, config) {\n var extensionOptions = {\n instanceId: instanceId,\n name: config.name,\n features: config.features,\n serialize: config.serialize,\n };\n if (config.maxAge !== false /* support === 0 */) {\n extensionOptions.maxAge = config.maxAge;\n }\n return extensionOptions;\n };\n DevtoolsExtension.decorators = [\n { type: Injectable }\n ];\n /** @nocollapse */\n DevtoolsExtension.ctorParameters = function () { return [\n { type: undefined, decorators: [{ type: Inject, args: [REDUX_DEVTOOLS_EXTENSION,] },] },\n { type: StoreDevtoolsConfig, decorators: [{ type: Inject, args: [STORE_DEVTOOLS_CONFIG,] },] },\n ]; };\n return DevtoolsExtension;\n}());\nexport { DevtoolsExtension };\n\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5zaW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9zdG9yZS1kZXZ0b29scy9zcmMvZXh0ZW5zaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5FLE9BQU8sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFMUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUMzQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFdEUsT0FBTyxFQUNMLGNBQWMsRUFDZCxlQUFlLEVBQ2YsYUFBYSxFQUNiLGNBQWMsRUFDZCxXQUFXLEdBQ1osTUFBTSxTQUFTLENBQUM7QUFFakIsTUFBTSxDQUFDLElBQU0sb0JBQW9CLEdBQUc7SUFDbEMsS0FBSyxFQUFFLE9BQU87SUFDZCxRQUFRLEVBQUUsVUFBVTtJQUNwQixJQUFJLEVBQUUsTUFBTTtJQUNaLE1BQU0sRUFBRSxRQUFRO0NBQ2pCLENBQUM7QUFFRixNQUFNLENBQUMsSUFBTSx3QkFBd0IsR0FBRyxJQUFJLGNBQWMsQ0FFeEQsMEJBQTBCLENBQUMsQ0FBQzs7SUF1QzVCLDJCQUNvQyxtQkFDSztRQUFBLFdBQU0sR0FBTixNQUFNOzBCQVYxQixnQkFBYyxJQUFJLENBQUMsR0FBRyxFQUFJO1FBWTdDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxpQkFBaUIsQ0FBQztRQUMzQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztLQUM1QjtJQUVELGtDQUFNLEdBQU4sVUFBTyxN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QUFDLENBQUM7O1FBRzVDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQU0sT0FBQSxpQkFBaUIsRUFBakIsQ0FBaUIsQ0FBQyxDQUFDLENBQUM7UUFDckUsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsY0FBTSxPQUFBLGdCQUFnQixFQUFoQixDQUFnQixDQUFDLENBQUMsQ0FBQztLQUMzRTtJQUVPLHdDQUFZLEdBQXBCLFVBQXFCLE1BQWM7UUFDakMsTUFBTSxDQUFDLE9BQU8sTUFBTSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQUksTUFBTSxNQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO0tBQ2xFO0lBRU8sOENBQWtCLEdBQTFCLFVBQTJCLFVBQWtCLEVBQUUsTUFBMkI7UUFDeEUsSUFBTSxnQkFBZ0IsR0FBaUM7WUFDckQsVUFBVSxFQUFFLFVBQVU7WUFDdEIsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJO1lBQ2pCLFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUTtZQUN6QixTQUFTLEVBQUUsTUFBTSxDQUFDLFNBQVM7U0FRNUIsQ0FBQztRQUNGLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEtBQUssS0FBSyxvQkFBb0IsQ0FBQyxDQUFDLENBQUM7WUFDaEQsZ0JBQWdCLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7U0FDekM7UUFDRCxNQUFNLENBQUMsZ0JBQWdCLENBQUM7S0FDekI7O2dCQW5KRixVQUFVOzs7O2dEQVdOLE1BQU0sU0FBQyx3QkFBd0I7Z0JBM0RKLG1CQUFtQix1QkE0RDlDLE1BQU0sU0FBQyxxQkFBcUI7OzRCQWxFakM7O1NBdURhLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGlvbiB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IGVtcHR5LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCwgc2hhcmUsIHN3aXRjaE1hcCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBQRVJGT1JNX0FDVElPTiB9IGZyb20gJy4vYWN0aW9ucyc7XG5pbXBvcnQgeyBTVE9SRV9ERVZUT09MU19DT05GSUcsIFN0b3JlRGV2dG9vbHNDb25maWcgfSBmcm9tICcuL2NvbmZpZyc7XG5pbXBvcnQgeyBMaWZ0ZWRBY3Rpb24sIExpZnRlZFN0YXRlIH0gZnJvbSAnLi9yZWR1Y2VyJztcbmltcG9ydCB7XG4gIHNhbml0aXplQWN0aW9uLFxuICBzYW5pdGl6ZUFjdGlvbnMsXG4gIHNhbml0aXplU3RhdGUsXG4gIHNhbml0aXplU3RhdGVzLFxuICB1bmxpZnRTdGF0ZSxcbn0gZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCBjb25zdCBFeHRlbnNpb25BY3Rpb25UeXBlcyA9IHtcbiAgU1RBUlQ6ICdTVEFSVCcsXG4gIERJU1BBVENIOiAnRElTUEFUQ0gnLFxuICBTVE9QOiAnU1RPUCcsXG4gIEFDVElPTjogJ0FDVElPTicsXG59O1xuXG5leHBvcnQgY29uc3QgUkVEVVhfREVWVE9PTFNfRVhURU5TSU9OID0gbmV3IEluamVjdGlvblRva2VuPFxuICBSZWR1eERldnRvb2xzRXh0ZW5zaW9uXG4+KCdSZWR1eCBEZXZ0b29scyBFeHRlbnNpb24nKTtcblxuZXhwb3J0IGludGVyZmFjZSBSZWR1eERldnRvb2xzRXh0ZW5zaW9uQ29ubmVjdGlvbiB7XG4gIHN1YnNjcmliZShsaXN0ZW5lcjogKGNoYW5nZTogYW55KSA9PiB2b2lkKTogdm9pZDtcbiAgdW5zdWJzY3JpYmUoKTogdm9pZDtcbiAgc2VuZChhY3Rpb246IGFueSwgc3RhdGU6IGFueSk6IHZvaWQ7XG4gIGluaXQoc3RhdGU/OiBhbnkpOiB2b2lkO1xuICBlcnJvcihhbnlFcnI6IGFueSk6IHZvaWQ7XG59XG5leHBvcnQgaW50ZXJmYWNlIFJlZHV4RGV2dG9vbHNFeHRlbnNpb25Db25maWcge1xuICBmZWF0dXJlcz86IG9iamVjdCB8IGJvb2xlYW47XG4gIG5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgaW5zdGFuY2VJZDogc3RyaW5nO1xuICBtYXhBZ2U/OiBudW1iZXI7XG4gIHNlcmlhbGl6ZT86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVkdXhEZXZ0b29sc0V4dGVuc2lvbiB7XG4gIGNvbm5lY3QoXG4gICAgb3B0aW9uczogUmVkdXhEZXZ0b29sc0V4dGVuc2lvbkNvbmZpZ1xuICApOiBSZWR1eERldnRvb2xzRXh0ZW5zaW9uQ29ubmVjdGlvbjtcbiAgc2VuZChcbiAgICBhY3Rpb246IGFueSxcbiAgICBzdGF0ZTogYW55LFxuICAgIG9wdGlvbnM6IFJlZHV4RGV2dG9vbHNFeHRlbnNpb25Db25maWcsXG4gICAgaW5zdGFuY2VJZD86IHN0cmluZ1xuICApOiB2b2lkO1xufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRGV2dG9vbHNFeHRlbnNpb24ge1xuICBwcml2YXRlIGluc3RhbmNlSWQgPSBgbmdyeC1zdG9yZS0ke0RhdGUubm93KCl9YDtcbiAgcHJpdmF0ZSBkZXZ0b29sc0V4dGVuc2lvbjogUmVkdXhEZXZ0b29sc0V4dGVuc2lvbjtcbiAgcHJpdmF0ZSBleHRlbnNpb25Db25uZWN0aW9uOiBSZWR1eERldnRvb2xzRXh0ZW5zaW9uQ29ubmVjdGlvbjtcblxuICBsaWZ0ZWRBY3Rpb25zJDogT2JzZXJ2YWJsZTxhbnk+O1xuICBhY3Rpb25zJDogT2JzZXJ2YWJsZTxhbnk+O1xuICBzdGFydCQ6IE9ic2VydmFibGU8YW55PjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KFJFRFVYX0RFVlRPT0xTX0VYVEVOU0lPTikgZGV2dG9vbHNFeHRlbnNpb246IFJlZHV4RGV2dG9vbHNFeHRlbnNpb24sXG4gICAgQEluamVjdChTVE9SRV9ERVZUT09MU19DT05GSUcpIHByaXZhdGUgY29uZmlnOiBTdG9yZURldnRvb2xzQ29uZmlnXG4gICkge1xuICAgIHRoaXMuZGV2dG9vbHNFeHRlbnNpb24gPSBkZXZ0b29sc0V4dGVuc2lvbjtcbiAgICB0aGlzLmNyZWF0ZUFjdGlvblN0cmVhbXMoKTtcbiAgfVxuXG4gIG5vdGlmeShhY3Rpb246IExpZnRlZEFjdGlvbiwgc3RhdGU6IExpZnRlZFN0YXRlKSB7XG4gICAgaWYgKCF0aGlzLmRldnRvb2xzRXh0ZW5zaW9uKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHRoZSBhY3Rpb24gcmVxdWlyZXMgYSBmdWxsIHVwZGF0ZSBvZiB0aGUgbGlmdGVkU3RhdGUuXG4gICAgLy8gSWYgaXQgaXMgYSBzaW1wbGUgYWN0aW9uIGdlbmVyYXRlZCBieSB0aGUgdXNlcidzIGFwcCwgb25seSBzZW5kIHRoZVxuICAgIC8vIGFjdGlvbiBhbmQgdGhlIGN1cnJlbnQgc3RhdGUgKGZhc3QpLlxuICAgIC8vXG4gICAgLy8gQSBmdWxsIGxpZnRlZFN0YXRlIHVwZGF0ZSAoc2xvdzogc2VyaWFsaXplcyB0aGUgZW50aXJlIGxpZnRlZFN0YXRlKSBpc1xuICAgIC8vIG9ubHkgcmVxdWlyZWQgd2hlbjpcbiAgICAvLyAgIGEpIHJlZHV4LWRldnRvb2xzLWV4dGVuc2lvbiBmaXJlcyB0aGUgQEBJbml0IGFjdGlvbiAoaWdub3JlZCBieVxuICAgIC8vICAgICAgQG5ncngvc3RvcmUtZGV2dG9vbHMpXG4gICAgLy8gICBiKSBhbiBhY3Rpb24gaXMgZ2VuZXJhdGVkIGJ5IGFuIEBuZ3J4IG1vZHVsZSAoZS5nLiBAbmdyeC9lZmZlY3RzL2luaXRcbiAgICAvLyAgICAgIG9yIEBuZ3J4L3N0b3JlL3VwZGF0ZS1yZWR1Y2VycylcbiAgICAvLyAgIGMpIHRoZSBzdGF0ZSBoYXMgYmVlbiByZWNvbXB1dGVkIGR1ZSB0byB0aW1lLXRyYXZlbGluZ1xuICAgIC8vICAgZCkgYW55IGFjdGlvbiB0aGF0IGlzIG5vdCBhIFBlcmZvcm1BY3Rpb24gdG8gZXJyIG9uIHRoZSBzaWRlIG9mXG4gICAgLy8gICAgICBjYXV0aW9uLlxuICAgIGlmIChhY3Rpb24udHlwZSA9PT0gUEVSRk9STV9BQ1RJT04pIHtcbiAgICAgIGNvbnN0IGN1cnJlbnRTdGF0ZSA9IHVubGlmdFN0YXRlKHN0YXRlKTtcbiAgICAgIGNvbnN0IHNhbml0aXplZFN0YXRlID0gdGhpcy5jb25maWcuc3RhdGVTYW5pdGl6ZXJcbiAgICAgICAgPyBzYW5pdGl6ZVN0YXRlKFxuICAgICAgICAgICAgdGhpcy5jb25maWcuc3RhdGVTYW5pdGl6ZXIsXG4gICAgICAgICAgICBjdXJyZW50U3RhdGUsXG4gICAgICAgICAgICBzdGF0ZS5jdXJyZW50U3RhdGVJbmRleFxuICAgICAgICAgIClcbiAgICAgICAgOiBjdXJyZW50U3RhdGU7XG4gICAgICBjb25zdCBzYW5pdGl6ZWRBY3Rpb24gPSB0aGlzLmNvbmZpZy5hY3Rpb25TYW5pdGl6ZXJcbiAgICAgICAgPyBzYW5pdGl6ZUFjdGlvbihcbiAgICAgICAgICAgIHRoaXMuY29uZmlnLmFjdGlvblNhbml0aXplcixcbiAgICAgICAgICAgIGFjdGlvbixcbiAgICAgICAgICAgIHN0YXRlLm5leHRBY3Rpb25JZFxuICAgICAgICAgIClcbiAgICAgICAgOiBhY3Rpb247XG4gICAgICB0aGlzLmV4dGVuc2lvbkNvbm5lY3Rpb24uc2VuZChzYW5pdGl6ZWRBY3Rpb24sIHNhbml0aXplZFN0YXRlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gUmVxdWlyZXMgZnVsbCBzdGF0ZSB1cGRhdGVcbiAgICAgIGNvbnN0IHNhbml0aXplZExpZnRlZFN0YXRlID0ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgYWN0aW9uc0J5SWQ6IHRoaXMuY29uZmlnLmFjdGlvblNhbml0aXplclxuICAgICAgICAgID8gc2FuaXRpemVBY3Rpb25zKHRoaXMuY29uZmlnLmFjdGlvblNhbml0aXplciwgc3RhdGUuYWN0aW9uc0J5SWQpXG4gICAgICAgICAgOiBzdGF0ZS5hY3Rpb25zQnlJZCxcbiAgICAgICAgY29tcHV0ZWRTdGF0ZXM6IHRoaXMuY29uZmlnLnN0YXRlU2FuaXRpemVyXG4gICAgICAgICAgPyBzYW5pdGl6ZVN0YXRlcyh0aGlzLmNvbmZpZy5zdGF0ZVNhbml0aXplciwgc3RhdGUuY29tcHV0ZWRTdGF0ZXMpXG4gICAgICAgICAgOiBzdGF0ZS5jb21wdXRlZFN0YXRlcyxcbiAgICAgIH07XG4gICAgICB0aGlzLmRldnRvb2xzRXh0ZW5zaW9uLnNlbmQoXG4gICAgICAgIG51bGwsXG4gICAgICAgIHNhbml0aXplZExpZnRlZFN0YXRlLFxuICAgICAgICB0aGlzLmdldEV4dGVuc2lvbkNvbmZpZyh0aGlzLmluc3RhbmNlSWQsIHRoaXMuY29uZmlnKSxcbiAgICAgICAgdGhpcy5pbnN0YW5jZUlkXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlQ2hhbmdlc09ic2VydmFibGUoKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBpZiAoIXRoaXMuZGV2dG9vbHNFeHRlbnNpb24pIHtcbiAgICAgIHJldHVybiBlbXB0eSgpO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZShzdWJzY3JpYmVyID0+IHtcbiAgICAgIGNvbnN0IGNvbm5lY3Rpb24gPSB0aGlzLmRldnRvb2xzRXh0ZW5zaW9uLmNvbm5lY3QoXG4gICAgICAgIHRoaXMuZ2V0RXh0ZW5zaW9uQ29uZmlnKHRoaXMuaW5zdGFuY2VJZCwgdGhpcy5jb25maWcpXG4gICAgICApO1xuICAgICAgdGhpcy5leHRlbnNpb25Db25uZWN0aW9uID0gY29ubmVjdGlvbjtcbiAgICAgIGNvbm5lY3Rpb24uaW5pdCgpO1xuXG4gICAgICBjb25uZWN0aW9uLnN1YnNjcmliZSgoY2hhbmdlOiBhbnkpID0+IHN1YnNjcmliZXIubmV4dChjaGFuZ2UpKTtcbiAgICAgIHJldHVybiBjb25uZWN0aW9uLnVuc3Vic2NyaWJlO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVBY3Rpb25TdHJlYW1zKCkge1xuICAgIC8vIExpc3RlbnMgdG8gYWxsIGNoYW5nZXMgYmFzZWQgb24gb3VyIGluc3RhbmNlSWRcbiAgICBjb25zdCBjaGFuZ2VzJCA9IHRoaXMuY3JlYXRlQ2hhbmdlc09ic2VydmFibGUoKS5waXBlKHNoYXJlKCkpO1xuXG4gICAgLy8gTGlzdGVuIGZvciB0aGUgc3RhcnQgYWN0aW9uXG4gICAgY29uc3Qgc3RhcnQkID0gY2hhbmdlcyQucGlwZShcbiAgICAgIGZpbHRlcigoY2hhbmdlOiBhbnkpID0+IGNoYW5nZS50eXBlID09PSBFeHRlbnNpb25BY3Rpb25UeXBlcy5TVEFSVClcbiAgICApO1xuXG4gICAgLy8gTGlzdGVuIGZvciB0aGUgc3RvcCBhY3Rpb25cbiAgICBjb25zdCBzdG9wJCA9IGNoYW5nZXMkLnBpcGUoXG4gICAgICBmaWx0ZXIoKGNoYW5nZTogYW55KSA9PiBjaGFuZ2UudHlwZSA9PT0gRXh0ZW5zaW9uQWN0aW9uVHlwZXMuU1RPUClcbiAgICApO1xuXG4gICAgLy8gTGlzdGVuIGZvciBsaWZ0ZWQgYWN0aW9uc1xuICAgIGNvbnN0IGxpZnRlZEFjdGlvbnMkID0gY2hhbmdlcyQucGlwZShcbiAgICAgIGZpbHRlcihjaGFuZ2UgPT4gY2hhbmdlLnR5cGUgPT09IEV4dGVuc2lvbkFjdGlvblR5cGVzLkRJU1BBVENIKSxcbiAgICAgIG1hcChjaGFuZ2UgPT4gdGhpcy51bndyYXBBY3Rpb24oY2hhbmdlLnBheWxvYWQpKVxuICAgICk7XG5cbiAgICAvLyBMaXN0ZW4gZm9yIHVubGlmdGVkIGFjdGlvbnNcbiAgICBjb25zdCBhY3Rpb25zJCA9IGNoYW5nZXMkLnBpcGUoXG4gICAgICBmaWx0ZXIoY2hhbmdlID0+IGNoYW5nZS50eXBlID09PSBFeHRlbnNpb25BY3Rpb25UeXBlcy5BQ1RJT04pLFxuICAgICAgbWFwKGNoYW5nZSA9PiB0aGlzLnVud3JhcEFjdGlvbihjaGFuZ2UucGF5bG9hZCkpXG4gICAgKTtcblxuICAgIGNvbnN0IGFjdGlvbnNVbnRpbFN0b3AkID0gYWN0aW9ucyQucGlwZSh0YWtlVW50aWwoc3RvcCQpKTtcbiAgICBjb25zdCBsaWZ0ZWRVbnRpbFN0b3AkID0gbGlmdGVkQWN0aW9ucyQucGlwZSh0YWtlVW50aWwoc3RvcCQpKTtcbiAgICB0aGlzLnN0YXJ0JCA9IHN0YXJ0JC5waXBlKHRha2VVbnRpbChzdG9wJCkpO1xuXG4gICAgLy8gT25seSB0YWtlIHRoZSBhY3Rpb24gc291cmNlcyBiZXR3ZWVuIHRoZSBzdGFydC9zdG9wIGV2ZW50c1xuICAgIHRoaXMuYWN0aW9ucyQgPSB0aGlzLnN0YXJ0JC5waXBlKHN3aXRjaE1hcCgoKSA9PiBhY3Rpb25zVW50aWxTdG9wJCkpO1xuICAgIHRoaXMubGlmdGVkQWN0aW9ucyQgPSB0aGlzLnN0YXJ0JC5waXBlKHN3aXRjaE1hcCgoKSA9PiBsaWZ0ZWRVbnRpbFN0b3AkKSk7XG4gIH1cblxuICBwcml2YXRlIHVud3JhcEFjdGlvbihhY3Rpb246IEFjdGlvbikge1xuICAgIHJldHVybiB0eXBlb2YgYWN0aW9uID09PSAnc3RyaW5nJyA/IGV2YWwoYCgke2FjdGlvbn0pYCkgOiBhY3Rpb247XG4gIH1cblxuICBwcml2YXRlIGdldEV4dGVuc2lvbkNvbmZpZyhpbnN0YW5jZUlkOiBzdHJpbmcsIGNvbmZpZzogU3RvcmVEZXZ0b29sc0NvbmZpZykge1xuICAgIGNvbnN0IGV4dGVuc2lvbk9wdGlvbnM6IFJlZHV4RGV2dG9vbHNFeHRlbnNpb25Db25maWcgPSB7XG4gICAgICBpbnN0YW5jZUlkOiBpbnN0YW5jZUlkLFxuICAgICAgbmFtZTogY29uZmlnLm5hbWUsXG4gICAgICBmZWF0dXJlczogY29uZmlnLmZlYXR1cmVzLFxuICAgICAgc2VyaWFsaXplOiBjb25maWcuc2VyaWFsaXplLFxuICAgICAgLy8gVGhlIGFjdGlvbi9zdGF0ZSBzYW5pdGl6ZXJzIGFyZSBub3QgYWRkZWQgdG8gdGhlIGNvbmZpZ1xuICAgICAgLy8gYmVjYXVzZSBzYW5pdGF0aW9uIGlzIGRvbmUgaW4gdGhpcyBjbGFzcyBhbHJlYWR5LlxuICAgICAgLy8gSXQgaXMgZG9uZSBiZWZvcmUgc2VuZGluZyBpdCB0byB0aGUgZGV2dG9vbHMgZXh0ZW5zaW9uIGZvciBjb25zaXN0ZW5jeTpcbiAgICAgIC8vIC0gSWYgd2UgY2FsbCBleHRlbnNpb25Db25uZWN0aW9uLnNlbmQoLi4uKSxcbiAgICAgIC8vICAgdGhlIGV4dGVuc2lvbiB3b3VsZCBjYWxsIHRoZSBzYW5pdGl6ZXJzLlxuICAgICAgLy8gLSBJZiB3ZSBjYWxsIGRldnRvb2xzRXh0ZW5zaW9uLnNlbmQoLi4uKSAoYWthIGZ1bGwgc3RhdGUgdXBkYXRlKSxcbiAgICAgIC8vICAgdGhlIGV4dGVuc2lvbiB3b3VsZCBOT1QgY2FsbCB0aGUgc2FuaXRpemVycywgc28gd2UgaGF2ZSB0byBkbyBpdCBvdXJzZWx2ZXMuXG4gICAgfTtcbiAgICBpZiAoY29uZmlnLm1heEFnZSAhPT0gZmFsc2UgLyogc3VwcG9ydCA9PT0gMCAqLykge1xuICAgICAgZXh0ZW5zaW9uT3B0aW9ucy5tYXhBZ2UgPSBjb25maWcubWF4QWdlO1xuICAgIH1cbiAgICByZXR1cm4gZXh0ZW5zaW9uT3B0aW9ucztcbiAgfVxufVxuIl19","var __assign = (this && this.__assign) || Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread = (this && this.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n return ar;\n};\nimport { UPDATE, INIT, } from '@ngrx/store';\nimport { difference, liftAction } from './utils';\nimport * as Actions from './actions';\nimport { PerformAction } from './actions';\nexport var INIT_ACTION = { type: INIT };\n/**\n * Computes the next entry in the log by applying an action.\n */\nfunction computeNextEntry(reducer, action, state, error, errorHandler) {\n if (error) {\n return {\n state: state,\n error: 'Interrupted by an error up the chain',\n };\n }\n var nextState = state;\n var nextError;\n try {\n nextState = reducer(state, action);\n }\n catch (err) {\n nextError = err.toString();\n errorHandler.handleError(err.stack || err);\n }\n return {\n state: nextState,\n error: nextError,\n };\n}\n/**\n * Runs the reducer on invalidated actions to get a fresh computation log.\n */\nfunction recomputeStates(computedStates, minInvalidatedStateIndex, reducer, committedState, actionsById, stagedActionIds, skippedActionIds, errorHandler) {\n // Optimization: exit early and return the same reference\n // if we know nothing could have changed.\n if (minInvalidatedStateIndex >= computedStates.length &&\n computedStates.length === stagedActionIds.length) {\n return computedStates;\n }\n var nextComputedStates = computedStates.slice(0, minInvalidatedStateIndex);\n for (var i = minInvalidatedStateIndex; i < stagedActionIds.length; i++) {\n var actionId = stagedActionIds[i];\n var action = actionsById[actionId].action;\n var previousEntry = nextComputedStates[i - 1];\n var previousState = previousEntry ? previousEntry.state : committedState;\n var previousError = previousEntry ? previousEntry.error : undefined;\n var shouldSkip = skippedActionIds.indexOf(actionId) > -1;\n var entry = shouldSkip\n ? previousEntry\n : computeNextEntry(reducer, action, previousState, previousError, errorHandler);\n nextComputedStates.push(entry);\n }\n return nextComputedStates;\n}\nexport function liftInitialState(initialCommittedState, monitorReducer) {\n return {\n monitorState: monitorReducer(undefined, {}),\n nextActionId: 1,\n actionsById: { 0: liftAction(INIT_ACTION) },\n stagedActionIds: [0],\n skippedActionIds: [],\n committedState: initialCommittedState,\n currentStateIndex: 0,\n computedStates: [],\n };\n}\n/**\n * Creates a history state reducer from an app's reducer.\n */\nexport function liftReducerWith(initialCommittedState, initialLiftedState, errorHandler, monitorReducer, options) {\n if (options === void 0) { options = {}; }\n /**\n * Manages how the history actions modify the history state.\n */\n return function (reducer) {\n return function (liftedState, liftedAction) {\n var _a = liftedState || initialLiftedState, monitorState = _a.monitorState, actionsById = _a.actionsById, nextActionId = _a.nextActionId, stagedActionIds = _a.stagedActionIds, skippedActionIds = _a.skippedActionIds, committedState = _a.committedState, currentStateIndex = _a.currentStateIndex, computedStates = _a.computedStates;\n if (!liftedState) {\n // Prevent mutating initialLiftedState\n actionsById = Object.create(actionsById);\n }\n function commitExcessActions(n) {\n // Auto-commits n-number of excess actions.\n var excess = n;\n var idsToDelete = stagedActionIds.slice(1, excess + 1);\n for (var i = 0; i < idsToDelete.length; i++) {\n if (computedStates[i + 1].error) {\n // Stop if error is found. Commit actions up to error.\n excess = i;\n idsToDelete = stagedActionIds.slice(1, excess + 1);\n break;\n }\n else {\n delete actionsById[idsToDelete[i]];\n }\n }\n skippedActionIds = skippedActionIds.filter(function (id) { return idsToDelete.indexOf(id) === -1; });\n stagedActionIds = __spread([0], stagedActionIds.slice(excess + 1));\n committedState = computedStates[excess].state;\n computedStates = computedStates.slice(excess);\n currentStateIndex =\n currentStateIndex > excess ? currentStateIndex - excess : 0;\n }\n // By default, aggressively recompute every state whatever happens.\n // This has O(n) performance, so we'll override this to a sensible\n // value whenever we feel like we don't have to recompute the states.\n var minInvalidatedStateIndex = 0;\n switch (liftedAction.type) {\n case Actions.RESET: {\n // Get back to the state the store was created with.\n actionsById = { 0: liftAction(INIT_ACTION) };\n nextActionId = 1;\n stagedActionIds = [0];\n skippedActionIds = [];\n committedState = initialCommittedState;\n currentStateIndex = 0;\n computedStates = [];\n break;\n }\n case Actions.COMMIT: {\n // Consider the last committed state the new starting point.\n // Squash any staged actions into a single committed state.\n actionsById = { 0: liftAction(INIT_ACTION) };\n nextActionId = 1;\n stagedActionIds = [0];\n skippedActionIds = [];\n committedState = computedStates[currentStateIndex].state;\n currentStateIndex = 0;\n computedStates = [];\n break;\n }\n case Actions.ROLLBACK: {\n // Forget about any staged actions.\n // Start again from the last committed state.\n actionsById = { 0: liftAction(INIT_ACTION) };\n nextActionId = 1;\n stagedActionIds = [0];\n skippedActionIds = [];\n currentStateIndex = 0;\n computedStates = [];\n break;\n }\n case Actions.TOGGLE_ACTION: {\n // Toggle whether an action with given ID is skipped.\n // Being skipped means it is a no-op during the computation.\n var actionId_1 = liftedAction.id;\n var index = skippedActionIds.indexOf(actionId_1);\n if (index === -1) {\n skippedActionIds = __spread([actionId_1], skippedActionIds);\n }\n else {\n skippedActionIds = skippedActionIds.filter(function (id) { return id !== actionId_1; });\n }\n // Optimization: we know history before this action hasn't changed\n minInvalidatedStateIndex = stagedActionIds.indexOf(actionId_1);\n break;\n }\n case Actions.SET_ACTIONS_ACTIVE: {\n // Toggle whether an action with given ID is skipped.\n // Being skipped means it is a no-op during the computation.\n var start = liftedAction.start, end = liftedAction.end, active = liftedAction.active;\n var actionIds = [];\n for (var i = start; i < end; i++)\n actionIds.push(i);\n if (active) {\n skippedActionIds = difference(skippedActionIds, actionIds);\n }\n else {\n skippedActionIds = __spread(skippedActionIds, actionIds);\n }\n // Optimization: we know history before this action hasn't changed\n minInvalidatedStateIndex = stagedActionIds.indexOf(start);\n break;\n }\n case Actions.JUMP_TO_STATE: {\n // Without recomputing anything, move the pointer that tell us\n // which state is considered the current one. Useful for sliders.\n currentStateIndex = liftedAction.index;\n // Optimization: we know the history has not changed.\n minInvalidatedStateIndex = Infinity;\n break;\n }\n case Actions.JUMP_TO_ACTION: {\n // Jumps to a corresponding state to a specific action.\n // Useful when filtering actions.\n var index = stagedActionIds.indexOf(liftedAction.actionId);\n if (index !== -1)\n currentStateIndex = index;\n minInvalidatedStateIndex = Infinity;\n break;\n }\n case Actions.SWEEP: {\n // Forget any actions that are currently being skipped.\n stagedActionIds = difference(stagedActionIds, skippedActionIds);\n skippedActionIds = [];\n currentStateIndex = Math.min(currentStateIndex, stagedActionIds.length - 1);\n break;\n }\n case Actions.PERFORM_ACTION: {\n // Auto-commit as new actions come in.\n if (options.maxAge && stagedActionIds.length === options.maxAge) {\n commitExcessActions(1);\n }\n if (currentStateIndex === stagedActionIds.length - 1) {\n currentStateIndex++;\n }\n var actionId = nextActionId++;\n // Mutation! This is the hottest path, and we optimize on purpose.\n // It is safe because we set a new key in a cache dictionary.\n actionsById[actionId] = liftedAction;\n stagedActionIds = __spread(stagedActionIds, [actionId]);\n // Optimization: we know that only the new action needs computing.\n minInvalidatedStateIndex = stagedActionIds.length - 1;\n break;\n }\n case Actions.IMPORT_STATE: {\n // Completely replace everything.\n (_b = liftedAction.nextLiftedState, monitorState = _b.monitorState, actionsById = _b.actionsById, nextActionId = _b.nextActionId, stagedActionIds = _b.stagedActionIds, skippedActionIds = _b.skippedActionIds, committedState = _b.committedState, currentStateIndex = _b.currentStateIndex, computedStates = _b.computedStates);\n break;\n }\n case INIT: {\n // Always recompute states on hot reload and init.\n minInvalidatedStateIndex = 0;\n if (options.maxAge && stagedActionIds.length > options.maxAge) {\n // States must be recomputed before committing excess.\n computedStates = recomputeStates(computedStates, minInvalidatedStateIndex, reducer, committedState, actionsById, stagedActionIds, skippedActionIds, errorHandler);\n commitExcessActions(stagedActionIds.length - options.maxAge);\n // Avoid double computation.\n minInvalidatedStateIndex = Infinity;\n }\n break;\n }\n case UPDATE: {\n var stateHasErrors = computedStates.filter(function (state) { return state.error; }).length > 0;\n if (stateHasErrors) {\n // Recompute all states\n minInvalidatedStateIndex = 0;\n if (options.maxAge && stagedActionIds.length > options.maxAge) {\n // States must be recomputed before committing excess.\n computedStates = recomputeStates(computedStates, minInvalidatedStateIndex, reducer, committedState, actionsById, stagedActionIds, skippedActionIds, errorHandler);\n commitExcessActions(stagedActionIds.length - options.maxAge);\n // Avoid double computation.\n minInvalidatedStateIndex = Infinity;\n }\n }\n else {\n if (currentStateIndex === stagedActionIds.length - 1) {\n currentStateIndex++;\n }\n // Add a new action to only recompute state\n var actionId = nextActionId++;\n actionsById[actionId] = new PerformAction(liftedAction, +Date.now());\n stagedActionIds = __spread(stagedActionIds, [actionId]);\n minInvalidatedStateIndex = stagedActionIds.length - 1;\n // States must be recomputed before committing excess.\n computedStates = recomputeStates(computedStates, minInvalidatedStateIndex, reducer, committedState, actionsById, stagedActionIds, skippedActionIds, errorHandler);\n // Recompute state history with latest reducer and update action\n computedStates = computedStates.map(function (cmp) {\n return (__assign({}, cmp, { state: reducer(cmp.state, liftedAction) }));\n });\n currentStateIndex = minInvalidatedStateIndex;\n if (options.maxAge && stagedActionIds.length > options.maxAge) {\n commitExcessActions(stagedActionIds.length - options.maxAge);\n }\n // Avoid double computation.\n minInvalidatedStateIndex = Infinity;\n }\n break;\n }\n default: {\n // If the action is not recognized, it's a monitor action.\n // Optimization: a monitor action can't change history.\n minInvalidatedStateIndex = Infinity;\n break;\n }\n }\n computedStates = recomputeStates(computedStates, minInvalidatedStateIndex, reducer, committedState, actionsById, stagedActionIds, skippedActionIds, errorHandler);\n monitorState = monitorReducer(monitorState, liftedAction);\n return {\n monitorState: monitorState,\n actionsById: actionsById,\n nextActionId: nextActionId,\n stagedActionIds: stagedActionIds,\n skippedActionIds: skippedActionIds,\n committedState: committedState,\n currentStateIndex: currentStateIndex,\n computedStates: computedStates,\n };\n var _b;\n };\n };\n}\n\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkdWNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL21vZHVsZXMvc3RvcmUtZGV2dG9vbHMvc3JjL3JlZHVjZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLE9BQU8sRUFLTCxNQUFNLEVBQ04sSUFBSSxHQUNMLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ2pELE9BQU8sS0FBSyxPQUFPLE1BQU0sV0FBVyxDQUFDO0FBRXJDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFhMUMsTUFBTSxDQUFDLElBQU0sV0FBVyxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDOzs7O0FBOEIxQywwQkFDRSxPQUFnQyxFQUNoQyxNQUFjLEVBQ2QsS0FBVSxFQUNWLEtBQVUsRUFDVixZQUEwQjtJQUUxQixFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ1YsTUFBTSxDQUFDO1lBQ0wsS0FBSyxPQUFBO1lBQ0wsS0FBSyxFQUFFLHNDQUFzQztTQUM5QyxDQUFDO0tBQ0g7SUFFRCxJQUFJLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFDdEIsSUFBSSxTQUFTLENBQUM7SUFDZCxJQUFJLENBQUM7UUFDSCxTQUFTLEdBQUcsT0FBTyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztLQUNwQztJQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ2IsU0FBUyxHQUFHLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUMzQixZQUFZLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxLQUFLLElBQUksR0FBRyxDQUFDLENBQUM7S0FDNUM7SUFFRCxNQUFNLENBQUM7UUFDTCxLQUFLLEVBQUUsU0FBUztRQUNoQixLQUFL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QyxHQUFHLENBQUMsVUFBQSxHQUFHOzRCQUFJLE9BQUEsY0FDdEMsR0FBRyxJQUNOLEtBQUssRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxZQUFZLENBQUMsSUFDdkM7d0JBSHlDLENBR3pDLENBQUMsQ0FBQzt3QkFFSixpQkFBaUIsR0FBRyx3QkFBd0IsQ0FBQzt3QkFFN0MsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSSxlQUFlLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDOzRCQUM5RCxtQkFBbUIsQ0FBQyxlQUFlLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQzt5QkFDOUQ7O3dCQUdELHdCQUF3QixHQUFHLFFBQVEsQ0FBQztxQkFDckM7b0JBRUQsS0FBSyxDQUFDO2lCQUNQO2dCQUNELFNBQVMsQ0FBQzs7O29CQUdSLHdCQUF3QixHQUFHLFFBQVEsQ0FBQztvQkFDcEMsS0FBSyxDQUFDO2lCQUNQO2FBQ0Y7WUFFRCxjQUFjLEdBQUcsZUFBZSxDQUM5QixjQUFjLEVBQ2Qsd0JBQXdCLEVBQ3hCLE9BQU8sRUFDUCxjQUFjLEVBQ2QsV0FBVyxFQUNYLGVBQWUsRUFDZixnQkFBZ0IsRUFDaEIsWUFBWSxDQUNiLENBQUM7WUFDRixZQUFZLEdBQUcsY0FBYyxDQUFDLFlBQVksRUFBRSxZQUFZLENBQUMsQ0FBQztZQUUxRCxNQUFNLENBQUM7Z0JBQ0wsWUFBWSxjQUFBO2dCQUNaLFdBQVcsYUFBQTtnQkFDWCxZQUFZLGNBQUE7Z0JBQ1osZUFBZSxpQkFBQTtnQkFDZixnQkFBZ0Isa0JBQUE7Z0JBQ2hCLGNBQWMsZ0JBQUE7Z0JBQ2QsaUJBQWlCLG1CQUFBO2dCQUNqQixjQUFjLGdCQUFBO2FBQ2YsQ0FBQzs7U0FDSDtJQXhTeUMsQ0F3U3pDLENBQUM7Q0FDSCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVycm9ySGFuZGxlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQWN0aW9uLFxuICBBY3Rpb25SZWR1Y2VyLFxuICBBY3Rpb25zU3ViamVjdCxcbiAgUmVkdWNlck1hbmFnZXIsXG4gIFVQREFURSxcbiAgSU5JVCxcbn0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgZGlmZmVyZW5jZSwgbGlmdEFjdGlvbiB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0ICogYXMgQWN0aW9ucyBmcm9tICcuL2FjdGlvbnMnO1xuaW1wb3J0IHsgU3RvcmVEZXZ0b29sc0NvbmZpZywgU3RhdGVTYW5pdGl6ZXIgfSBmcm9tICcuL2NvbmZpZyc7XG5pbXBvcnQgeyBQZXJmb3JtQWN0aW9uIH0gZnJvbSAnLi9hY3Rpb25zJztcblxuZXhwb3J0IHR5cGUgSW5pdEFjdGlvbiA9IHtcbiAgcmVhZG9ubHkgdHlwZTogdHlwZW9mIElOSVQ7XG59O1xuXG5leHBvcnQgdHlwZSBVcGRhdGVSZWR1Y2VyQWN0aW9uID0ge1xuICByZWFkb25seSB0eXBlOiB0eXBlb2YgVVBEQVRFO1xufTtcblxuZXhwb3J0IHR5cGUgQ29yZUFjdGlvbnMgPSBJbml0QWN0aW9uIHwgVXBkYXRlUmVkdWNlckFjdGlvbjtcbmV4cG9ydCB0eXBlIEFjdGlvbnMgPSBBY3Rpb25zLkFsbCB8IENvcmVBY3Rpb25zO1xuXG5leHBvcnQgY29uc3QgSU5JVF9BQ1RJT04gPSB7IHR5cGU6IElOSVQgfTtcblxuZXhwb3J0IGludGVyZmFjZSBDb21wdXRlZFN0YXRlIHtcbiAgc3RhdGU6IGFueTtcbiAgZXJyb3I6IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaWZ0ZWRBY3Rpb24ge1xuICB0eXBlOiBzdHJpbmc7XG4gIGFjdGlvbjogQWN0aW9uO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExpZnRlZEFjdGlvbnMge1xuICBbaWQ6IG51bWJlcl06IExpZnRlZEFjdGlvbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaWZ0ZWRTdGF0ZSB7XG4gIG1vbml0b3JTdGF0ZTogYW55O1xuICBuZXh0QWN0aW9uSWQ6IG51bWJlcjtcbiAgYWN0aW9uc0J5SWQ6IExpZnRlZEFjdGlvbnM7XG4gIHN0YWdlZEFjdGlvbklkczogbnVtYmVyW107XG4gIHNraXBwZWRBY3Rpb25JZHM6IG51bWJlcltdO1xuICBjb21taXR0ZWRTdGF0ZTogYW55O1xuICBjdXJyZW50U3RhdGVJbmRleDogbnVtYmVyO1xuICBjb21wdXRlZFN0YXRlczogQ29tcHV0ZWRTdGF0ZVtdO1xufVxuXG4vKipcbiAqIENvbXB1dGVzIHRoZSBuZXh0IGVudHJ5IGluIHRoZSBsb2cgYnkgYXBwbHlpbmcgYW4gYWN0aW9uLlxuICovXG5mdW5jdGlvbiBjb21wdXRlTmV4dEVudHJ5KFxuICByZWR1Y2VyOiBBY3Rpb25SZWR1Y2VyPGFueSwgYW55PixcbiAgYWN0aW9uOiBBY3Rpb24sXG4gIHN0YXRlOiBhbnksXG4gIGVycm9yOiBhbnksXG4gIGVycm9ySGFuZGxlcjogRXJyb3JIYW5kbGVyXG4pIHtcbiAgaWYgKGVycm9yKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YXRlLFxuICAgICAgZXJyb3I6ICdJbnRlcnJ1cHRlZCBieSBhbiBlcnJvciB1cCB0aGUgY2hhaW4nLFxuICAgIH07XG4gIH1cblxuICBsZXQgbmV4dFN0YXRlID0gc3RhdGU7XG4gIGxldCBuZXh0RXJyb3I7XG4gIHRyeSB7XG4gICAgbmV4dFN0YXRlID0gcmVkdWNlcihzdGF0ZSwgYWN0aW9uKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgbmV4dEVycm9yID0gZXJyLnRvU3RyaW5nKCk7XG4gICAgZXJyb3JIYW5kbGVyLmhhbmRsZUVycm9yKGVyci5zdGFjayB8fCBlcnIpO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBzdGF0ZTogbmV4dFN0YXRlLFxuICAgIGVycm9yOiBuZXh0RXJyb3IsXG4gIH07XG59XG5cbi8qKlxuICogUnVucyB0aGUgcmVkdWNlciBvbiBpbnZhbGlkYXRlZCBhY3Rpb25zIHRvIGdldCBhIGZyZXNoIGNvbXB1dGF0aW9uIGxvZy5cbiAqL1xuZnVuY3Rpb24gcmVjb21wdXRlU3RhdGVzKFxuICBjb21wdXRlZFN0YXRlczogQ29tcHV0ZWRTdGF0ZVtdLFxuICBtaW5JbnZhbGlkYXRlZFN0YXRlSW5kZXg6IG51bWJlcixcbiAgcmVkdWNlcjogQWN0aW9uUmVkdWNlcjxhbnksIGFueT4sXG4gIGNvbW1pdHRlZFN0YXRlOiBhbnksXG4gIGFjdGlvbnNCeUlkOiBMaWZ0ZWRBY3Rpb25zLFxuICBzdGFnZWRBY3Rpb25JZHM6IG51bWJlcltdLFxuICBza2lwcGVkQWN0aW9uSWRzOiBudW1iZXJbXSxcbiAgZXJyb3JIYW5kbGVyOiBFcnJvckhhbmRsZXJcbikge1xuICAvLyBPcHRpbWl6YXRpb246IGV4aXQgZWFybHkgYW5kIHJldHVybiB0aGUgc2FtZSByZWZlcmVuY2VcbiAgLy8gaWYgd2Uga25vdyBub3RoaW5nIGNvdWxkIGhhdmUgY2hhbmdlZC5cbiAgaWYgKFxuICAgIG1pbkludmFsaWRhdGVkU3RhdGVJbmRleCA+PSBjb21wdXRlZFN0YXRlcy5sZW5ndGggJiZcbiAgICBjb21wdXRlZFN0YXRlcy5sZW5ndGggPT09IHN0YWdlZEFjdGlvbklkcy5sZW5ndGhcbiAgKSB7XG4gICAgcmV0dXJuIGNvbXB1dGVkU3RhdGVzO1xuICB9XG5cbiAgY29uc3QgbmV4dENvbXB1dGVkU3RhdGVzID0gY29tcHV0ZWRTdGF0ZXMuc2xpY2UoMCwgbWluSW52YWxpZGF0ZWRTdGF0ZUluZGV4KTtcbiAgZm9yIChsZXQgaSA9IG1pbkludmFsaWRhdGVkU3RhdGVJbmRleDsgaSA8IHN0YWdlZEFjdGlvbklkcy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGFjdGlvbklkID0gc3RhZ2VkQWN0aW9uSWRzW2ldO1xuICAgIGNvbnN0IGFjdGlvbiA9IGFjdGlvbnNCeUlkW2FjdGlvbklkXS5hY3Rpb247XG5cbiAgICBjb25zdCBwcmV2aW91c0VudHJ5ID0gbmV4dENvbXB1dGVkU3RhdGVzW2kgLSAxXTtcbiAgICBjb25zdCBwcmV2aW91c1N0YXRlID0gcHJldmlvdXNFbnRyeSA/IHByZXZpb3VzRW50cnkuc3RhdGUgOiBjb21taXR0ZWRTdGF0ZTtcbiAgICBjb25zdCBwcmV2aW91c0Vycm9yID0gcHJldmlvdXNFbnRyeSA/IHByZXZpb3VzRW50cnkuZXJyb3IgOiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBzaG91bGRTa2lwID0gc2tpcHBlZEFjdGlvbklkcy5pbmRleE9mKGFjdGlvbklkKSA+IC0xO1xuICAgIGNvbnN0IGVudHJ5OiBDb21wdXRlZFN0YXRlID0gc2hvdWxkU2tpcFxuICAgICAgPyBwcmV2aW91c0VudHJ5XG4gICAgICA6IGNvbXB1dGVOZXh0RW50cnkoXG4gICAgICAgICAgcmVkdWNlcixcbiAgICAgICAgICBhY3Rpb24sXG4gICAgICAgICAgcHJldmlvdXNTdGF0ZSxcbiAgICAgICAgICBwcmV2aW91c0Vycm9yLFxuICAgICAgICAgIGVycm9ySGFuZGxlclxuICAgICAgICApO1xuXG4gICAgbmV4dENvbXB1dGVkU3RhdGVzLnB1c2goZW50cnkpO1xuICB9XG5cbiAgcmV0dXJuIG5leHRDb21wdXRlZFN0YXRlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxpZnRJbml0aWFsU3RhdGUoXG4gIGluaXRpYWxDb21taXR0ZWRTdGF0ZT86IGFueSxcbiAgbW9uaXRvclJlZHVjZXI/OiBhbnlcbik6IExpZnRlZFN0YXRlIHtcbiAgcmV0dXJuIHtcbiAgICBtb25pdG9yU3RhdGU6IG1vbml0b3JSZWR1Y2VyKHVuZGVmaW5lZCwge30pLFxuICAgIG5leHRBY3Rpb25JZDogMSxcbiAgICBhY3Rpb25zQnlJZDogeyAwOiBsaWZ0QWN0aW9uKElOSVRfQUNUSU9OKSB9LFxuICAgIHN0YWdlZEFjdGlvbklkczogWzBdLFxuICAgIHNraXBwZWRBY3Rpb25JZHM6IFtdLFxuICAgIGNvbW1pdHRlZFN0YXRlOiBpbml0aWFsQ29tbWl0dGVkU3RhdGUsXG4gICAgY3VycmVudFN0YXRlSW5kZXg6IDAsXG4gICAgY29tcHV0ZWRTdGF0ZXM6IFtdLFxuICB9O1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBoaXN0b3J5IHN0YXRlIHJlZHVjZXIgZnJvbSBhbiBhcHAncyByZWR1Y2VyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbGlmdFJlZHVjZXJXaXRoKFxuICBpbml0aWFsQ29tbWl0dGVkU3RhdGU6IGFueSxcbiAgaW5pdGlhbExpZnRlZFN0YXRlOiBMaWZ0ZWRTdGF0ZSxcbiAgZXJyb3JIYW5kbGVyOiBFcnJvckhhbmRsZXIsXG4gIG1vbml0b3JSZWR1Y2VyPzogYW55LFxuICBvcHRpb25zOiBQYXJ0aWFsPFN0b3JlRGV2dG9vbHNDb25maWc+ID0ge31cbikge1xuICAvKipcbiAgICogTWFuYWdlcyBob3cgdGhlIGhpc3RvcnkgYWN0aW9ucyBtb2RpZnkgdGhlIGhpc3Rvcnkgc3RhdGUuXG4gICAqL1xuICByZXR1cm4gKFxuICAgIHJlZHVjZXI6IEFjdGlvblJlZHVjZXI8YW55LCBhbnk+XG4gICk6IEFjdGlvblJlZHVjZXI8TGlmdGVkU3RhdGUsIEFjdGlvbnM+ID0+IChsaWZ0ZWRTdGF0ZSwgbGlmdGVkQWN0aW9uKSA9PiB7XG4gICAgbGV0IHtcbiAgICAgIG1vbml0b3JTdGF0ZSxcbiAgICAgIGFjdGlvbnNCeUlkLFxuICAgICAgbmV4dEFjdGlvbklkLFxuICAgICAgc3RhZ2VkQWN0aW9uSWRzLFxuICAgICAgc2tpcHBlZEFjdGlvbklkcyxcbiAgICAgIGNvbW1pdHRlZFN0YXRlLFxuICAgICAgY3VycmVudFN0YXRlSW5kZXgsXG4gICAgICBjb21wdXRlZFN0YXRlcyxcbiAgICB9ID1cbiAgICAgIGxpZnRlZFN0YXRlIHx8IGluaXRpYWxMaWZ0ZWRTdGF0ZTtcblxuICAgIGlmICghbGlmdGVkU3RhdGUpIHtcbiAgICAgIC8vIFByZXZlbnQgbXV0YXRpbmcgaW5pdGlhbExpZnRlZFN0YXRlXG4gICAgICBhY3Rpb25zQnlJZCA9IE9iamVjdC5jcmVhdGUoYWN0aW9uc0J5SWQpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNvbW1pdEV4Y2Vzc0FjdGlvbnMobjogbnVtYmVyKSB7XG4gICAgICAvLyBBdXRvLWNvbW1pdHMgbi1udW1iZXIgb2YgZXhjZXNzIGFjdGlvbnMuXG4gICAgICBsZXQgZXhjZXNzID0gbjtcbiAgICAgIGxldCBpZHNUb0RlbGV0ZSA9IHN0YWdlZEFjdGlvbklkcy5zbGljZSgxLCBleGNlc3MgKyAxKTtcblxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpZHNUb0RlbGV0ZS5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAoY29tcHV0ZWRTdGF0ZXNbaSArIDFdLmVycm9yKSB7XG4gICAgICAgICAgLy8gU3RvcCBpZiBlcnJvciBpcyBmb3VuZC4gQ29tbWl0IGFjdGlvbnMgdXAgdG8gZXJyb3IuXG4gICAgICAgICAgZXhjZXNzID0gaTtcbiAgICAgICAgICBpZHNUb0RlbGV0ZSA9IHN0YWdlZEFjdGlvbklkcy5zbGljZSgxLCBleGNlc3MgKyAxKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBkZWxldGUgYWN0aW9uc0J5SWRbaWRzVG9EZWxldGVbaV1dO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHNraXBwZWRBY3Rpb25JZHMgPSBza2lwcGVkQWN0aW9uSWRzLmZpbHRlcihcbiAgICAgICAgaWQgPT4gaWRzVG9EZWxldGUuaW5kZXhPZihpZCkgPT09IC0xXG4gICAgICApO1xuICAgICAgc3RhZ2VkQWN0aW9uSWRzID0gWzAsIC4uLnN0YWdlZEFjdGlvbklkcy5zbGljZShleGNlc3MgKyAxKV07XG4gICAgICBjb21taXR0ZWRTdGF0ZSA9IGNvbXB1dGVkU3RhdGVzW2V4Y2Vzc10uc3RhdGU7XG4gICAgICBjb21wdXRlZFN0YXRlcyA9IGNvbXB1dGVkU3RhdGVzLnNsaWNlKGV4Y2Vzcyk7XG4gICAgICBjdXJyZW50U3RhdGVJbmRleCA9XG4gICAgICAgIGN1cnJlbnRTdGF0ZUluZGV4ID4gZXhjZXNzID8gY3VycmVudFN0YXRlSW5kZXggLSBleGNlc3MgOiAwO1xuICAgIH1cblxuICAgIC8vIEJ5IGRlZmF1bHQsIGFnZ3Jlc3NpdmVseSByZWNvbXB1dGUgZXZlcnkgc3RhdGUgd2hhdGV2ZXIgaGFwcGVucy5cbiAgICAvLyBUaGlzIGhhcyBPKG4pIHBlcmZvcm1hbmNlLCBzbyB3ZSdsbCBvdmVycmlkZSB0aGlzIHRvIGEgc2Vuc2libGVcbiAgICAvLyB2YWx1ZSB3aGVuZXZlciB3ZSBmZWVsIGxpa2Ugd2UgZG9uJ3QgaGF2ZSB0byByZWNvbXB1dGUgdGhlIHN0YXRlcy5cbiAgICBsZXQgbWluSW52YWxpZGF0ZWRTdGF0ZUluZGV4ID0gMDtcblxuICAgIHN3aXRjaCAobGlmdGVkQWN0aW9uLnR5cGUpIHtcbiAgICAgIGNhc2UgQWN0aW9ucy5SRVNFVDoge1xuICAgICAgICAvLyBHZXQgYmFjayB0byB0aGUgc3RhdGUgdGhlIHN0b3JlIHdhcyBjcmVhdGVkIHdpdGguXG4gICAgICAgIGFjdGlvbnNCeUlkID0geyAwOiBsaWZ0QWN0aW9uKElOSVRfQUNUSU9OKSB9O1xuICAgICAgICBuZXh0QWN0aW9uSWQgPSAxO1xuICAgICAgICBzdGFnZWRBY3Rpb25JZHMgPSBbMF07XG4gICAgICAgIHNraXBwZWRBY3Rpb25JZHMgPSBbXTtcbiAgICAgICAgY29tbWl0dGVkU3RhdGUgPSBpbml0aWFsQ29tbWl0dGVkU3RhdGU7XG4gICAgICAgIGN1cnJlbnRTdGF0ZUluZGV4ID0gMDtcbiAgICAgICAgY29tcHV0ZWRTdGF0ZXMgPSBbXTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIEFjdGlvbnMuQ09NTUlUOiB7XG4gICAgICAgIC8vIENvbnNpZGVyIHRoZSBsYXN0IGNvbW1pdHRlZCBzdGF0ZSB0aGUgbmV3IHN0YXJ0aW5nIHBvaW50LlxuICAgICAgICAvLyBTcXVhc2ggYW55IHN0YWdlZCBhY3Rpb25zIGludG8gYSBzaW5nbGUgY29tbWl0dGVkIHN0YXRlLlxuICAgICAgICBhY3Rpb25zQnlJZCA9IHsgMDogbGlmdEFjdGlvbihJTklUX0FDVElPTikgfTtcbiAgICAgICAgbmV4dEFjdGlvbklkID0gMTtcbiAgICAgICAgc3RhZ2VkQWN0aW9uSWRzID0gWzBdO1xuICAgICAgICBza2lwcGVkQWN0aW9uSWRzID0gW107XG4gICAgICAgIGNvbW1pdHRlZFN0YXRlID0gY29tcHV0ZWRTdGF0ZXNbY3VycmVudFN0YXRlSW5kZXhdLnN0YXRlO1xuICAgICAgICBjdXJyZW50U3RhdGVJbmRleCA9IDA7XG4gICAgICAgIGNvbXB1dGVkU3RhdGVzID0gW107XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBBY3Rpb25zLlJPTExCQUNLOiB7XG4gICAgICAgIC8vIEZvcmdldCBhYm91dCBhbnkgc3RhZ2VkIGFjdGlvbnMuXG4gICAgICAgIC8vIFN0YXJ0IGFnYWluIGZyb20gdGhlIGxhc3QgY29tbWl0dGVkIHN0YXRlLlxuICAgICAgICBhY3Rpb25zQnlJZCA9IHsgMDogbGlmdEFjdGlvbihJTklUX0FDVElPTikgfTtcbiAgICAgICAgbmV4dEFjdGlvbklkID0gMTtcbiAgICAgICAgc3RhZ2VkQWN0aW9uSWRzID0gWzBdO1xuICAgICAgICBza2lwcGVkQWN0aW9uSWRzID0gW107XG4gICAgICAgIGN1cnJlbnRTdGF0ZUluZGV4ID0gMDtcbiAgICAgICAgY29tcHV0ZWRTdGF0ZXMgPSBbXTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIEFjdGlvbnMuVE9HR0xFX0FDVElPTjoge1xuICAgICAgICAvLyBUb2dnbGUgd2hldGhlciBhbiBhY3Rpb24gd2l0aCBnaXZlbiBJRCBpcyBza2lwcGVkLlxuICAgICAgICAvLyBCZWluZyBza2lwcGVkIG1lYW5zIGl0IGlzIGEgbm8tb3AgZHVyaW5nIHRoZSBjb21wdXRhdGlvbi5cbiAgICAgICAgY29uc3QgeyBpZDogYWN0aW9uSWQgfSA9IGxpZnRlZEFjdGlvbjtcbiAgICAgICAgY29uc3QgaW5kZXggPSBza2lwcGVkQWN0aW9uSWRzLmluZGV4T2YoYWN0aW9uSWQpO1xuICAgICAgICBpZiAoaW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgc2tpcHBlZEFjdGlvbklkcyA9IFthY3Rpb25JZCwgLi4uc2tpcHBlZEFjdGlvbklkc107XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2tpcHBlZEFjdGlvbklkcyA9IHNraXBwZWRBY3Rpb25JZHMuZmlsdGVyKGlkID0+IGlkICE9PSBhY3Rpb25JZCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gT3B0aW1pemF0aW9uOiB3ZSBrbm93IGhpc3RvcnkgYmVmb3JlIHRoaXMgYWN0aW9uIGhhc24ndCBjaGFuZ2VkXG4gICAgICAgIG1pbkludmFsaWRhdGVkU3RhdGVJbmRleCA9IHN0YWdlZEFjdGlvbklkcy5pbmRleE9mKGFjdGlvbklkKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIEFjdGlvbnMuU0VUX0FDVElPTlNfQUNUSVZFOiB7XG4gICAgICAgIC8vIFRvZ2dsZSB3aGV0aGVyIGFuIGFjdGlvbiB3aXRoIGdpdmVuIElEIGlzIHNraXBwZWQuXG4gICAgICAgIC8vIEJlaW5nIHNraXBwZWQgbWVhbnMgaXQgaXMgYSBuby1vcCBkdXJpbmcgdGhlIGNvbXB1dGF0aW9uLlxuICAgICAgICBjb25zdCB7IHN0YXJ0LCBlbmQsIGFjdGl2ZSB9ID0gbGlmdGVkQWN0aW9uO1xuICAgICAgICBjb25zdCBhY3Rpb25JZHMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IHN0YXJ0OyBpIDwgZW5kOyBpKyspIGFjdGlvbklkcy5wdXNoKGkpO1xuICAgICAgICBpZiAoYWN0aXZlKSB7XG4gICAgICAgICAgc2tpcHBlZEFjdGlvbklkcyA9IGRpZmZlcmVuY2Uoc2tpcHBlZEFjdGlvbklkcywgYWN0aW9uSWRzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBza2lwcGVkQWN0aW9uSWRzID0gWy4uLnNraXBwZWRBY3Rpb25JZHMsIC4uLmFjdGlvbklkc107XG4gICAgICAgIH1cblxuICAgICAgICAvLyBPcHRpbWl6YXRpb246IHdlIGtub3cgaGlzdG9yeSBiZWZvcmUgdGhpcyBhY3Rpb24gaGFzbid0IGNoYW5nZWRcbiAgICAgICAgbWluSW52YWxpZGF0ZWRTdGF0ZUluZGV4ID0gc3RhZ2VkQWN0aW9uSWRzLmluZGV4T2Yoc3RhcnQpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgQWN0aW9ucy5KVU1QX1RPX1NUQVRFOiB7XG4gICAgICAgIC8vIFdpdGhvdXQgcmVjb21wdXRpbmcgYW55dGhpbmcsIG1vdmUgdGhlIHBvaW50ZXIgdGhhdCB0ZWxsIHVzXG4gICAgICAgIC8vIHdoaWNoIHN0YXRlIGlzIGNvbnNpZGVyZWQgdGhlIGN1cnJlbnQgb25lLiBVc2VmdWwgZm9yIHNsaWRlcnMuXG4gICAgICAgIGN1cnJlbnRTdGF0ZUluZGV4ID0gbGlmdGVkQWN0aW9uLmluZGV4O1xuICAgICAgICAvLyBPcHRpbWl6YXRpb246IHdlIGtub3cgdGhlIGhpc3RvcnkgaGFzIG5vdCBjaGFuZ2VkLlxuICAgICAgICBtaW5JbnZhbGlkYXRlZFN0YXRlSW5kZXggPSBJbmZpbml0eTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIEFjdGlvbnMuSlVNUF9UT19BQ1RJT046IHtcbiAgICAgICAgLy8gSnVtcHMgdG8gYSBjb3JyZXNwb25kaW5nIHN0YXRlIHRvIGEgc3BlY2lmaWMgYWN0aW9uLlxuICAgICAgICAvLyBVc2VmdWwgd2hlbiBmaWx0ZXJpbmcgYWN0aW9ucy5cbiAgICAgICAgY29uc3QgaW5kZXggPSBzdGFnZWRBY3Rpb25JZHMuaW5kZXhPZihsaWZ0ZWRBY3Rpb24uYWN0aW9uSWQpO1xuICAgICAgICBpZiAoaW5kZXggIT09IC0xKSBjdXJyZW50U3RhdGVJbmRleCA9IGluZGV4O1xuICAgICAgICBtaW5JbnZhbGlkYXRlZFN0YXRlSW5kZXggPSBJbmZpbml0eTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIEFjdGlvbnMuU1dFRVA6IHtcbiAgICAgICAgLy8gRm9yZ2V0IGFueSBhY3Rpb25zIHRoYXQgYXJlIGN1cnJlbnRseSBiZWluZyBza2lwcGVkLlxuICAgICAgICBzdGFnZWRBY3Rpb25JZHMgPSBkaWZmZXJlbmNlKHN0YWdlZEFjdGlvbklkcywgc2tpcHBlZEFjdGlvbklkcyk7XG4gICAgICAgIHNraXBwZWRBY3Rpb25JZHMgPSBbXTtcbiAgICAgICAgY3VycmVudFN0YXRlSW5kZXggPSBNYXRoLm1pbihcbiAgICAgICAgICBjdXJyZW50U3RhdGVJbmRleCxcbiAgICAgICAgICBzdGFnZWRBY3Rpb25JZHMubGVuZ3RoIC0gMVxuICAgICAgICApO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgQWN0aW9ucy5QRVJGT1JNX0FDVElPTjoge1xuICAgICAgICAvLyBBdXRvLWNvbW1pdCBhcyBuZXcgYWN0aW9ucyBjb21lIGluLlxuICAgICAgICBpZiAob3B0aW9ucy5tYXhBZ2UgJiYgc3RhZ2VkQWN0aW9uSWRzLmxlbmd0aCA9PT0gb3B0aW9ucy5tYXhBZ2UpIHtcbiAgICAgICAgICBjb21taXRFeGNlc3NBY3Rpb25zKDEpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGN1cnJlbnRTdGF0ZUluZGV4ID09PSBzdGFnZWRBY3Rpb25JZHMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgIGN1cnJlbnRTdGF0ZUluZGV4Kys7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYWN0aW9uSWQgPSBuZXh0QWN0aW9uSWQrKztcbiAgICAgICAgLy8gTXV0YXRpb24hIFRoaXMgaXMgdGhlIGhvdHRlc3QgcGF0aCwgYW5kIHdlIG9wdGltaXplIG9uIHB1cnBvc2UuXG4gICAgICAgIC8vIEl0IGlzIHNhZmUgYmVjYXVzZSB3ZSBzZXQgYSBuZXcga2V5IGluIGEgY2FjaGUgZGljdGlvbmFyeS5cbiAgICAgICAgYWN0aW9uc0J5SWRbYWN0aW9uSWRdID0gbGlmdGVkQWN0aW9uO1xuXG4gICAgICAgIHN0YWdlZEFjdGlvbklkcyA9IFsuLi5zdGFnZWRBY3Rpb25JZHMsIGFjdGlvbklkXTtcbiAgICAgICAgLy8gT3B0aW1pemF0aW9uOiB3ZSBrbm93IHRoYXQgb25seSB0aGUgbmV3IGFjdGlvbiBuZWVkcyBjb21wdXRpbmcuXG4gICAgICAgIG1pbkludmFsaWRhdGVkU3RhdGVJbmRleCA9IHN0YWdlZEFjdGlvbklkcy5sZW5ndGggLSAxO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgQWN0aW9ucy5JTVBPUlRfU1RBVEU6IHtcbiAgICAgICAgLy8gQ29tcGxldGVseSByZXBsYWNlIGV2ZXJ5dGhpbmcuXG4gICAgICAgICh7XG4gICAgICAgICAgbW9uaXRvclN0YXRlLFxuICAgICAgICAgIGFjdGlvbnNCeUlkLFxuICAgICAgICAgIG5leHRBY3Rpb25JZCxcbiAgICAgICAgICBzdGFnZWRBY3Rpb25JZHMsXG4gICAgICAgICAgc2tpcHBlZEFjdGlvbklkcyxcbiAgICAgICAgICBjb21taXR0ZWRTdGF0ZSxcbiAgICAgICAgICBjdXJyZW50U3RhdGVJbmRleCxcbiAgICAgICAgICBjb21wdXRlZFN0YXRlcyxcbiAgICAgICAgfSA9IGxpZnRlZEFjdGlvbi5uZXh0TGlmdGVkU3RhdGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgSU5JVDoge1xuICAgICAgICAvLyBBbHdheXMgcmVjb21wdXRlIHN0YXRlcyBvbiBob3QgcmVsb2FkIGFuZCBpbml0LlxuICAgICAgICBtaW5JbnZhbGlkYXRlZFN0YXRlSW5kZXggPSAwO1xuXG4gICAgICAgIGlmIChvcHRpb25zLm1heEFnZSAmJiBzdGFnZWRBY3Rpb25JZHMubGVuZ3RoID4gb3B0aW9ucy5tYXhBZ2UpIHtcbiAgICAgICAgICAvLyBTdGF0ZXMgbXVzdCBiZSByZWNvbXB1dGVkIGJlZm9yZSBjb21taXR0aW5nIGV4Y2Vzcy5cbiAgICAgICAgICBjb21wdXRlZFN0YXRlcyA9IHJlY29tcHV0ZVN0YXRlcyhcbiAgICAgICAgICAgIGNvbXB1dGVkU3RhdGVzLFxuICAgICAgICAgICAgbWluSW52YWxpZGF0ZWRTdGF0ZUluZGV4LFxuICAgICAgICAgICAgcmVkdWNlcixcbiAgICAgICAgICAgIGNvbW1pdHRlZFN0YXRlLFxuICAgICAgICAgICAgYWN0aW9uc0J5SWQsXG4gICAgICAgICAgICBzdGFnZWRBY3Rpb25JZHMsXG4gICAgICAgICAgICBza2lwcGVkQWN0aW9uSWRzLFxuICAgICAgICAgICAgZXJyb3JIYW5kbGVyXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGNvbW1pdEV4Y2Vzc0FjdGlvbnMoc3RhZ2VkQWN0aW9uSWRzLmxlbmd0aCAtIG9wdGlvbnMubWF4QWdlKTtcblxuICAgICAgICAgIC8vIEF2b2lkIGRvdWJsZSBjb21wdXRhdGlvbi5cbiAgICAgICAgICBtaW5JbnZhbGlkYXRlZFN0YXRlSW5kZXggPSBJbmZpbml0eTtcbiAgICAgICAgfVxuXG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBVUERBVEU6IHtcbiAgICAgICAgY29uc3Qgc3RhdGVIYXNFcnJvcnMgPVxuICAgICAgICAgIGNvbXB1dGVkU3RhdGVzLmZpbHRlcihzdGF0ZSA9PiBzdGF0ZS5lcnJvcikubGVuZ3RoID4gMDtcblxuICAgICAgICBpZiAoc3RhdGVIYXNFcnJvcnMpIHtcbiAgICAgICAgICAvLyBSZWNvbXB1dGUgYWxsIHN0YXRlc1xuICAgICAgICAgIG1pbkludmFsaWRhdGVkU3RhdGVJbmRleCA9IDA7XG5cbiAgICAgICAgICBpZiAob3B0aW9ucy5tYXhBZ2UgJiYgc3RhZ2VkQWN0aW9uSWRzLmxlbmd0aCA+IG9wdGlvbnMubWF4QWdlKSB7XG4gICAgICAgICAgICAvLyBTdGF0ZXMgbXVzdCBiZSByZWNvbXB1dGVkIGJlZm9yZSBjb21taXR0aW5nIGV4Y2Vzcy5cbiAgICAgICAgICAgIGNvbXB1dGVkU3RhdGVzID0gcmVjb21wdXRlU3RhdGVzKFxuICAgICAgICAgICAgICBjb21wdXRlZFN0YXRlcyxcbiAgICAgICAgICAgICAgbWluSW52YWxpZGF0ZWRTdGF0ZUluZGV4LFxuICAgICAgICAgICAgICByZWR1Y2VyLFxuICAgICAgICAgICAgICBjb21taXR0ZWRTdGF0ZSxcbiAgICAgICAgICAgICAgYWN0aW9uc0J5SWQsXG4gICAgICAgICAgICAgIHN0YWdlZEFjdGlvbklkcyxcbiAgICAgICAgICAgICAgc2tpcHBlZEFjdGlvbklkcyxcbiAgICAgICAgICAgICAgZXJyb3JIYW5kbGVyXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBjb21taXRFeGNlc3NBY3Rpb25zKHN0YWdlZEFjdGlvbklkcy5sZW5ndGggLSBvcHRpb25zLm1heEFnZSk7XG5cbiAgICAgICAgICAgIC8vIEF2b2lkIGRvdWJsZSBjb21wdXRhdGlvbi5cbiAgICAgICAgICAgIG1pbkludmFsaWRhdGVkU3RhdGVJbmRleCA9IEluZmluaXR5O1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoY3VycmVudFN0YXRlSW5kZXggPT09IHN0YWdlZEFjdGlvbklkcy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICBjdXJyZW50U3RhdGVJbmRleCsrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIEFkZCBhIG5ldyBhY3Rpb24gdG8gb25seSByZWNvbXB1dGUgc3RhdGVcbiAgICAgICAgICBjb25zdCBhY3Rpb25JZCA9IG5leHRBY3Rpb25JZCsrO1xuICAgICAgICAgIGFjdGlvbnNCeUlkW2FjdGlvbklkXSA9IG5ldyBQZXJmb3JtQWN0aW9uKGxpZnRlZEFjdGlvbiwgK0RhdGUubm93KCkpO1xuICAgICAgICAgIHN0YWdlZEFjdGlvbklkcyA9IFsuLi5zdGFnZWRBY3Rpb25JZHMsIGFjdGlvbklkXTtcblxuICAgICAgICAgIG1pbkludmFsaWRhdGVkU3RhdGVJbmRleCA9IHN0YWdlZEFjdGlvbklkcy5sZW5ndGggLSAxO1xuXG4gICAgICAgICAgLy8gU3RhdGVzIG11c3QgYmUgcmVjb21wdXRlZCBiZWZvcmUgY29tbWl0dGluZyBleGNlc3MuXG4gICAgICAgICAgY29tcHV0ZWRTdGF0ZXMgPSByZWNvbXB1dGVTdGF0ZXMoXG4gICAgICAgICAgICBjb21wdXRlZFN0YXRlcyxcbiAgICAgICAgICAgIG1pbkludmFsaWRhdGVkU3RhdGVJbmRleCxcbiAgICAgICAgICAgIHJlZHVjZXIsXG4gICAgICAgICAgICBjb21taXR0ZWRTdGF0ZSxcbiAgICAgICAgICAgIGFjdGlvbnNCeUlkLFxuICAgICAgICAgICAgc3RhZ2VkQWN0aW9uSWRzLFxuICAgICAgICAgICAgc2tpcHBlZEFjdGlvbklkcyxcbiAgICAgICAgICAgIGVycm9ySGFuZGxlclxuICAgICAgICAgICk7XG5cbiAgICAgICAgICAvLyBSZWNvbXB1dGUgc3RhdGUgaGlzdG9yeSB3aXRoIGxhdGVzdCByZWR1Y2VyIGFuZCB1cGRhdGUgYWN0aW9uXG4gICAgICAgICAgY29tcHV0ZWRTdGF0ZXMgPSBjb21wdXRlZFN0YXRlcy5tYXAoY21wID0+ICh7XG4gICAgICAgICAgICAuLi5jbXAsXG4gICAgICAgICAgICBzdGF0ZTogcmVkdWNlcihjbXAuc3RhdGUsIGxpZnRlZEFjdGlvbiksXG4gICAgICAgICAgfSkpO1xuXG4gICAgICAgICAgY3VycmVudFN0YXRlSW5kZXggPSBtaW5JbnZhbGlkYXRlZFN0YXRlSW5kZXg7XG5cbiAgICAgICAgICBpZiAob3B0aW9ucy5tYXhBZ2UgJiYgc3RhZ2VkQWN0aW9uSWRzLmxlbmd0aCA+IG9wdGlvbnMubWF4QWdlKSB7XG4gICAgICAgICAgICBjb21taXRFeGNlc3NBY3Rpb25zKHN0YWdlZEFjdGlvbklkcy5sZW5ndGggLSBvcHRpb25zLm1heEFnZSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gQXZvaWQgZG91YmxlIGNvbXB1dGF0aW9uLlxuICAgICAgICAgIG1pbkludmFsaWRhdGVkU3RhdGVJbmRleCA9IEluZmluaXR5O1xuICAgICAgICB9XG5cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIC8vIElmIHRoZSBhY3Rpb24gaXMgbm90IHJlY29nbml6ZWQsIGl0J3MgYSBtb25pdG9yIGFjdGlvbi5cbiAgICAgICAgLy8gT3B0aW1pemF0aW9uOiBhIG1vbml0b3IgYWN0aW9uIGNhbid0IGNoYW5nZSBoaXN0b3J5LlxuICAgICAgICBtaW5JbnZhbGlkYXRlZFN0YXRlSW5kZXggPSBJbmZpbml0eTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29tcHV0ZWRTdGF0ZXMgPSByZWNvbXB1dGVTdGF0ZXMoXG4gICAgICBjb21wdXRlZFN0YXRlcyxcbiAgICAgIG1pbkludmFsaWRhdGVkU3RhdGVJbmRleCxcbiAgICAgIHJlZHVjZXIsXG4gICAgICBjb21taXR0ZWRTdGF0ZSxcbiAgICAgIGFjdGlvbnNCeUlkLFxuICAgICAgc3RhZ2VkQWN0aW9uSWRzLFxuICAgICAgc2tpcHBlZEFjdGlvbklkcyxcbiAgICAgIGVycm9ySGFuZGxlclxuICAgICk7XG4gICAgbW9uaXRvclN0YXRlID0gbW9uaXRvclJlZHVjZXIobW9uaXRvclN0YXRlLCBsaWZ0ZWRBY3Rpb24pO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIG1vbml0b3JTdGF0ZSxcbiAgICAgIGFjdGlvbnNCeUlkLFxuICAgICAgbmV4dEFjdGlvbklkLFxuICAgICAgc3RhZ2VkQWN0aW9uSWRzLFxuICAgICAgc2tpcHBlZEFjdGlvbklkcyxcbiAgICAgIGNvbW1pdHRlZFN0YXRlLFxuICAgICAgY3VycmVudFN0YXRlSW5kZXgsXG4gICAgICBjb21wdXRlZFN0YXRlcyxcbiAgICB9O1xuICB9O1xufVxuIl19","var __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nimport { Injectable, Inject, ErrorHandler } from '@angular/core';\nimport { ActionsSubject, INITIAL_STATE, ReducerObservable, ScannedActionsSubject, } from '@ngrx/store';\nimport { merge, queueScheduler, ReplaySubject, } from 'rxjs';\nimport { map, observeOn, scan, skip, withLatestFrom } from 'rxjs/operators';\nimport * as Actions from './actions';\nimport { STORE_DEVTOOLS_CONFIG, StoreDevtoolsConfig } from './config';\nimport { DevtoolsExtension } from './extension';\nimport { liftInitialState, liftReducerWith } from './reducer';\nimport { liftAction, unliftState } from './utils';\nvar DevtoolsDispatcher = /** @class */ (function (_super) {\n __extends(DevtoolsDispatcher, _super);\n function DevtoolsDispatcher() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n DevtoolsDispatcher.decorators = [\n { type: Injectable }\n ];\n return DevtoolsDispatcher;\n}(ActionsSubject));\nexport { DevtoolsDispatcher };\nvar StoreDevtools = /** @class */ (function () {\n function StoreDevtools(dispatcher, actions$, reducers$, extension, scannedActions, errorHandler, initialState, config) {\n var _this = this;\n var liftedInitialState = liftInitialState(initialState, config.monitor);\n var liftReducer = liftReducerWith(initialState, liftedInitialState, errorHandler, config.monitor, config);\n var liftedAction$ = merge(merge(actions$.asObservable().pipe(skip(1)), extension.actions$).pipe(map(liftAction)), dispatcher, extension.liftedActions$).pipe(observeOn(queueScheduler));\n var liftedReducer$ = reducers$.pipe(map(liftReducer));\n var liftedStateSubject = new ReplaySubject(1);\n var liftedStateSubscription = liftedAction$\n .pipe(withLatestFrom(liftedReducer$), scan(function (_a, _b) {\n var liftedState = _a.state;\n var _c = __read(_b, 2), action = _c[0], reducer = _c[1];\n var reducedLiftedState = reducer(liftedState, action);\n // // Extension should be sent the sanitized lifted state\n extension.notify(action, reducedLiftedState);\n return { state: reducedLiftedState, action: action };\n }, { state: liftedInitialState, action: null }))\n .subscribe(function (_a) {\n var state = _a.state, action = _a.action;\n liftedStateSubject.next(state);\n if (action.type === Actions.PERFORM_ACTION) {\n var unliftedAction = action.action;\n scannedActions.next(unliftedAction);\n }\n });\n var extensionStartSubscription = extension.start$.subscribe(function () {\n _this.refresh();\n });\n var liftedState$ = liftedStateSubject.asObservable();\n var state$ = liftedState$.pipe(map(unliftState));\n this.extensionStartSubscription = extensionStartSubscription;\n this.stateSubscription = liftedStateSubscription;\n this.dispatcher = dispatcher;\n this.liftedState = liftedState$;\n this.state = state$;\n }\n StoreDevtools.prototype.dispatch = function (action) {\n this.dispatcher.next(action);\n };\n StoreDevtools.prototype.next = function (action) {\n this.dispatcher.next(action);\n };\n StoreDevtools.prototype.error = function (error) { };\n StoreDevtools.prototype.complete = function () { };\n StoreDevtools.prototype.performAction = function (action) {\n this.dispatch(new Actions.PerformAction(action, +Date.now()));\n };\n StoreDevtools.prototype.refresh = function () {\n this.dispatch(new Actions.Refresh());\n };\n StoreDevtools.prototype.reset = function () {\n this.dispatch(new Actions.Reset(+Date.now()));\n };\n StoreDevtools.prototype.rollback = function () {\n this.dispatch(new Actions.Rollback(+Date.now()));\n };\n StoreDevtools.prototype.commit = function () {\n this.dispatch(new Actions.Commit(+Date.now()));\n };\n StoreDevtools.prototype.sweep = function () {\n this.dispatch(new Actions.Sweep());\n };\n StoreDevtools.prototype.toggleAction = function (id) {\n this.dispatch(new Actions.ToggleAction(id));\n };\n StoreDevtools.prototype.jumpToAction = function (actionId) {\n this.dispatch(new Actions.JumpToAction(actionId));\n };\n StoreDevtools.prototype.jumpToState = function (index) {\n this.dispatch(new Actions.JumpToState(index));\n };\n StoreDevtools.prototype.importState = function (nextLiftedState) {\n this.dispatch(new Actions.ImportState(nextLiftedState));\n };\n StoreDevtools.decorators = [\n { type: Injectable }\n ];\n /** @nocollapse */\n StoreDevtools.ctorParameters = function () { return [\n { type: DevtoolsDispatcher, },\n { type: ActionsSubject, },\n { type: ReducerObservable, },\n { type: DevtoolsExtension, },\n { type: ScannedActionsSubject, },\n { type: ErrorHandler, },\n { type: undefined, decorators: [{ type: Inject, args: [INITIAL_STATE,] },] },\n { type: StoreDevtoolsConfig, decorators: [{ type: Inject, args: [STORE_DEVTOOLS_CONFIG,] },] },\n ]; };\n return StoreDevtools;\n}());\nexport { StoreDevtools };\n\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2dG9vbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9tb2R1bGVzL3N0b3JlLWRldnRvb2xzL3NyYy9kZXZ0b29scy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFhLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1RSxPQUFPLEVBR0wsY0FBYyxFQUNkLGFBQWEsRUFDYixpQkFBaUIsRUFDakIscUJBQXFCLEdBQ3RCLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFDTCxLQUFLLEVBR0wsY0FBYyxFQUNkLGFBQWEsR0FFZCxNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFNUUsT0FBTyxLQUFLLE9BQU8sTUFBTSxXQUFXLENBQUM7QUFDckMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNoRCxPQUFPLEVBQWUsZ0JBQWdCLEVBQUUsZUFBZSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLE1BQU0sU0FBUyxDQUFDOztJQUdWLHNDQUFjOzs7OztnQkFEckQsVUFBVTs7NkJBekJYO0VBMEJ3QyxjQUFjO1NBQXpDLGtCQUFrQjs7SUFVN0IsdUJBQ0UsVUFBOEIsRUFDOUIsUUFBd0IsRUFDeEIsU0FBNEIsRUFDNUIsU0FBNEIsRUFDNUIsY0FBcUMsRUFDckMsWUFBMEIsRUFDSCxjQUNRO1FBUmpDLGlCQTRFQztRQWxFQyxJQUFNLGtCQUFrQixHQUFHLGdCQUFnQixDQUFDLFlBQVks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QyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztLQUMvQztJQUVELG1DQUFXLEdBQVgsVUFBWSxlQUFvQjtRQUM5QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksT0FBTyxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDO0tBQ3pEOztnQkF4SUYsVUFBVTs7OztnQkFGRSxrQkFBa0I7Z0JBdEI3QixjQUFjO2dCQUVkLGlCQUFpQjtnQkFlVixpQkFBaUI7Z0JBZHhCLHFCQUFxQjtnQkFQaUIsWUFBWTtnREEyQy9DLE1BQU0sU0FBQyxhQUFhO2dCQXZCTyxtQkFBbUIsdUJBd0I5QyxNQUFNLFNBQUMscUJBQXFCOzt3QkE1Q2pDOztTQTZCYSxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0LCBPbkRlc3Ryb3ksIEVycm9ySGFuZGxlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQWN0aW9uLFxuICBBY3Rpb25SZWR1Y2VyLFxuICBBY3Rpb25zU3ViamVjdCxcbiAgSU5JVElBTF9TVEFURSxcbiAgUmVkdWNlck9ic2VydmFibGUsXG4gIFNjYW5uZWRBY3Rpb25zU3ViamVjdCxcbn0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHtcbiAgbWVyZ2UsXG4gIE9ic2VydmFibGUsXG4gIE9ic2VydmVyLFxuICBxdWV1ZVNjaGVkdWxlcixcbiAgUmVwbGF5U3ViamVjdCxcbiAgU3Vic2NyaXB0aW9uLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgb2JzZXJ2ZU9uLCBzY2FuLCBza2lwLCB3aXRoTGF0ZXN0RnJvbSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0ICogYXMgQWN0aW9ucyBmcm9tICcuL2FjdGlvbnMnO1xuaW1wb3J0IHsgU1RPUkVfREVWVE9PTFNfQ09ORklHLCBTdG9yZURldnRvb2xzQ29uZmlnIH0gZnJvbSAnLi9jb25maWcnO1xuaW1wb3J0IHsgRGV2dG9vbHNFeHRlbnNpb24gfSBmcm9tICcuL2V4dGVuc2lvbic7XG5pbXBvcnQgeyBMaWZ0ZWRTdGF0ZSwgbGlmdEluaXRpYWxTdGF0ZSwgbGlmdFJlZHVjZXJXaXRoIH0gZnJvbSAnLi9yZWR1Y2VyJztcbmltcG9ydCB7IGxpZnRBY3Rpb24sIHVubGlmdFN0YXRlIH0gZnJvbSAnLi91dGlscyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBEZXZ0b29sc0Rpc3BhdGNoZXIgZXh0ZW5kcyBBY3Rpb25zU3ViamVjdCB7fVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgU3RvcmVEZXZ0b29scyBpbXBsZW1lbnRzIE9ic2VydmVyPGFueT4ge1xuICBwcml2YXRlIHN0YXRlU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgZXh0ZW5zaW9uU3RhcnRTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgcHVibGljIGRpc3BhdGNoZXI6IEFjdGlvbnNTdWJqZWN0O1xuICBwdWJsaWMgbGlmdGVkU3RhdGU6IE9ic2VydmFibGU8TGlmdGVkU3RhdGU+O1xuICBwdWJsaWMgc3RhdGU6IE9ic2VydmFibGU8YW55PjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBkaXNwYXRjaGVyOiBEZXZ0b29sc0Rpc3BhdGNoZXIsXG4gICAgYWN0aW9ucyQ6IEFjdGlvbnNTdWJqZWN0LFxuICAgIHJlZHVjZXJzJDogUmVkdWNlck9ic2VydmFibGUsXG4gICAgZXh0ZW5zaW9uOiBEZXZ0b29sc0V4dGVuc2lvbixcbiAgICBzY2FubmVkQWN0aW9uczogU2Nhbm5lZEFjdGlvbnNTdWJqZWN0LFxuICAgIGVycm9ySGFuZGxlcjogRXJyb3JIYW5kbGVyLFxuICAgIEBJbmplY3QoSU5JVElBTF9TVEFURSkgaW5pdGlhbFN0YXRlOiBhbnksXG4gICAgQEluamVjdChTVE9SRV9ERVZUT09MU19DT05GSUcpIGNvbmZpZzogU3RvcmVEZXZ0b29sc0NvbmZpZ1xuICApIHtcbiAgICBjb25zdCBsaWZ0ZWRJbml0aWFsU3RhdGUgPSBsaWZ0SW5pdGlhbFN0YXRlKGluaXRpYWxTdGF0ZSwgY29uZmlnLm1vbml0b3IpO1xuICAgIGNvbnN0IGxpZnRSZWR1Y2VyID0gbGlmdFJlZHVjZXJXaXRoKFxuICAgICAgaW5pdGlhbFN0YXRlLFxuICAgICAgbGlmdGVkSW5pdGlhbFN0YXRlLFxuICAgICAgZXJyb3JIYW5kbGVyLFxuICAgICAgY29uZmlnLm1vbml0b3IsXG4gICAgICBjb25maWdcbiAgICApO1xuXG4gICAgY29uc3QgbGlmdGVkQWN0aW9uJCA9IG1lcmdlKFxuICAgICAgbWVyZ2UoYWN0aW9ucyQuYXNPYnNlcnZhYmxlKCkucGlwZShza2lwKDEpKSwgZXh0ZW5zaW9uLmFjdGlvbnMkKS5waXBlKFxuICAgICAgICBtYXAobGlmdEFjdGlvbilcbiAgICAgICksXG4gICAgICBkaXNwYXRjaGVyLFxuICAgICAgZXh0ZW5zaW9uLmxpZnRlZEFjdGlvbnMkXG4gICAgKS5waXBlKG9ic2VydmVPbihxdWV1ZVNjaGVkdWxlcikpO1xuXG4gICAgY29uc3QgbGlmdGVkUmVkdWNlciQgPSByZWR1Y2VycyQucGlwZShtYXAobGlmdFJlZHVjZXIpKTtcblxuICAgIGNvbnN0IGxpZnRlZFN0YXRlU3ViamVjdCA9IG5ldyBSZXBsYXlTdWJqZWN0PExpZnRlZFN0YXRlPigxKTtcblxuICAgIGNvbnN0IGxpZnRlZFN0YXRlU3Vic2NyaXB0aW9uID0gbGlmdGVkQWN0aW9uJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHdpdGhMYXRlc3RGcm9tKGxpZnRlZFJlZHVjZXIkKSxcbiAgICAgICAgc2NhbjxcbiAgICAgICAgICBbYW55LCBBY3Rpb25SZWR1Y2VyPExpZnRlZFN0YXRlLCBBY3Rpb25zLkFsbD5dLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHN0YXRlOiBMaWZ0ZWRTdGF0ZTtcbiAgICAgICAgICAgIGFjdGlvbjogYW55O1xuICAgICAgICAgIH1cbiAgICAgICAgPihcbiAgICAgICAgICAoeyBzdGF0ZTogbGlmdGVkU3RhdGUgfSwgW2FjdGlvbiwgcmVkdWNlcl0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJlZHVjZWRMaWZ0ZWRTdGF0ZSA9IHJlZHVjZXIobGlmdGVkU3RhdGUsIGFjdGlvbik7XG5cbiAgICAgICAgICAgIC8vIC8vIEV4dGVuc2lvbiBzaG91bGQgYmUgc2VudCB0aGUgc2FuaXRpemVkIGxpZnRlZCBzdGF0ZVxuICAgICAgICAgICAgZXh0ZW5zaW9uLm5vdGlmeShhY3Rpb24sIHJlZHVjZWRMaWZ0ZWRTdGF0ZSk7XG5cbiAgICAgICAgICAgIHJldHVybiB7IHN0YXRlOiByZWR1Y2VkTGlmdGVkU3RhdGUsIGFjdGlvbiB9O1xuICAgICAgICAgIH0sXG4gICAgICAgICAgeyBzdGF0ZTogbGlmdGVkSW5pdGlhbFN0YXRlLCBhY3Rpb246IG51bGwgYXMgYW55IH1cbiAgICAgICAgKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoeyBzdGF0ZSwgYWN0aW9uIH0pID0+IHtcbiAgICAgICAgbGlmdGVkU3RhdGVTdWJqZWN0Lm5leHQoc3RhdGUpO1xuXG4gICAgICAgIGlmIChhY3Rpb24udHlwZSA9PT0gQWN0aW9ucy5QRVJGT1JNX0FDVElPTikge1xuICAgICAgICAgIGNvbnN0IHVubGlmdGVkQWN0aW9uID0gKGFjdGlvbiBhcyBBY3Rpb25zLlBlcmZvcm1BY3Rpb24pLmFjdGlvbjtcblxuICAgICAgICAgIHNjYW5uZWRBY3Rpb25zLm5leHQodW5saWZ0ZWRBY3Rpb24pO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIGNvbnN0IGV4dGVuc2lvblN0YXJ0U3Vic2NyaXB0aW9uID0gZXh0ZW5zaW9uLnN0YXJ0JC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5yZWZyZXNoKCk7XG4gICAgfSk7XG5cbiAgICBjb25zdCBsaWZ0ZWRTdGF0ZSQgPSBsaWZ0ZWRTdGF0ZVN1YmplY3QuYXNPYnNlcnZhYmxlKCkgYXMgT2JzZXJ2YWJsZTxcbiAgICAgIExpZnRlZFN0YXRlXG4gICAgPjtcbiAgICBjb25zdCBzdGF0ZSQgPSBsaWZ0ZWRTdGF0ZSQucGlwZShtYXAodW5saWZ0U3RhdGUpKTtcblxuICAgIHRoaXMuZXh0ZW5zaW9uU3RhcnRTdWJzY3JpcHRpb24gPSBleHRlbnNpb25TdGFydFN1YnNjcmlwdGlvbjtcbiAgICB0aGlzLnN0YXRlU3Vic2NyaXB0aW9uID0gbGlmdGVkU3RhdGVTdWJzY3JpcHRpb247XG4gICAgdGhpcy5kaXNwYXRjaGVyID0gZGlzcGF0Y2hlcjtcbiAgICB0aGlzLmxpZnRlZFN0YXRlID0gbGlmdGVkU3RhdGUkO1xuICAgIHRoaXMuc3RhdGUgPSBzdGF0ZSQ7XG4gIH1cblxuICBkaXNwYXRjaChhY3Rpb246IEFjdGlvbikge1xuICAgIHRoaXMuZGlzcGF0Y2hlci5uZXh0KGFjdGlvbik7XG4gIH1cblxuICBuZXh0KGFjdGlvbjogYW55KSB7XG4gICAgdGhpcy5kaXNwYXRjaGVyLm5leHQoYWN0aW9uKTtcbiAgfVxuXG4gIGVycm9yKGVycm9yOiBhbnkpIHt9XG5cbiAgY29tcGxldGUoKSB7fVxuXG4gIHBlcmZvcm1BY3Rpb24oYWN0aW9uOiBhbnkpIHtcbiAgICB0aGlzLmRpc3BhdGNoKG5ldyBBY3Rpb25zLlBlcmZvcm1BY3Rpb24oYWN0aW9uLCArRGF0ZS5ub3coKSkpO1xuICB9XG5cbiAgcmVmcmVzaCgpIHtcbiAgICB0aGlzLmRpc3BhdGNoKG5ldyBBY3Rpb25zLlJlZnJlc2goKSk7XG4gIH1cblxuICByZXNldCgpIHtcbiAgICB0aGlzLmRpc3BhdGNoKG5ldyBBY3Rpb25zLlJlc2V0KCtEYXRlLm5vdygpKSk7XG4gIH1cblxuICByb2xsYmFjaygpIHtcbiAgICB0aGlzLmRpc3BhdGNoKG5ldyBBY3Rpb25zLlJvbGxiYWNrKCtEYXRlLm5vdygpKSk7XG4gIH1cblxuICBjb21taXQoKSB7XG4gICAgdGhpcy5kaXNwYXRjaChuZXcgQWN0aW9ucy5Db21taXQoK0RhdGUubm93KCkpKTtcbiAgfVxuXG4gIHN3ZWVwKCkge1xuICAgIHRoaXMuZGlzcGF0Y2gobmV3IEFjdGlvbnMuU3dlZXAoKSk7XG4gIH1cblxuICB0b2dnbGVBY3Rpb24oaWQ6IG51bWJlcikge1xuICAgIHRoaXMuZGlzcGF0Y2gobmV3IEFjdGlvbnMuVG9nZ2xlQWN0aW9uKGlkKSk7XG4gIH1cblxuICBqdW1wVG9BY3Rpb24oYWN0aW9uSWQ6IG51bWJlcikge1xuICAgIHRoaXMuZGlzcGF0Y2gobmV3IEFjdGlvbnMuSnVtcFRvQWN0aW9uKGFjdGlvbklkKSk7XG4gIH1cblxuICBqdW1wVG9TdGF0ZShpbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy5kaXNwYXRjaChuZXcgQWN0aW9ucy5KdW1wVG9TdGF0ZShpbmRleCkpO1xuICB9XG5cbiAgaW1wb3J0U3RhdGUobmV4dExpZnRlZFN0YXRlOiBhbnkpIHtcbiAgICB0aGlzLmRpc3BhdGNoKG5ldyBBY3Rpb25zLkltcG9ydFN0YXRlKG5leHRMaWZ0ZWRTdGF0ZSkpO1xuICB9XG59XG4iXX0=","import { InjectionToken, NgModule } from '@angular/core';\nimport { ReducerManagerDispatcher, StateObservable } from '@ngrx/store';\nimport { INITIAL_OPTIONS, STORE_DEVTOOLS_CONFIG, } from './config';\nimport { DevtoolsDispatcher, StoreDevtools } from './devtools';\nimport { DevtoolsExtension, REDUX_DEVTOOLS_EXTENSION, } from './extension';\nexport var IS_EXTENSION_OR_MONITOR_PRESENT = new InjectionToken('Is Devtools Extension or Monitor Present');\nexport function createIsExtensionOrMonitorPresent(extension, config) {\n return Boolean(extension) || config.monitor !== noMonitor;\n}\nexport function createReduxDevtoolsExtension() {\n var extensionKey = '__REDUX_DEVTOOLS_EXTENSION__';\n if (typeof window === 'object' &&\n typeof window[extensionKey] !== 'undefined') {\n return window[extensionKey];\n }\n else {\n return null;\n }\n}\nexport function createStateObservable(devtools) {\n return devtools.state;\n}\nexport function noMonitor() {\n return null;\n}\nexport var DEFAULT_NAME = 'NgRx Store DevTools';\nexport function createConfig(_options) {\n var DEFAULT_OPTIONS = {\n maxAge: false,\n monitor: noMonitor,\n actionSanitizer: undefined,\n stateSanitizer: undefined,\n name: DEFAULT_NAME,\n serialize: false,\n logOnly: false,\n features: false,\n };\n var options = typeof _options === 'function' ? _options() : _options;\n var logOnly = options.logOnly\n ? { pause: true, export: true, test: true }\n : false;\n var features = options.features || logOnly;\n var config = Object.assign({}, DEFAULT_OPTIONS, { features: features }, options);\n if (config.maxAge && config.maxAge < 2) {\n throw new Error(\"Devtools 'maxAge' cannot be less than 2, got \" + config.maxAge);\n }\n return config;\n}\nvar StoreDevtoolsModule = /** @class */ (function () {\n function StoreDevtoolsModule() {\n }\n StoreDevtoolsModule.instrument = function (options) {\n if (options === void 0) { options = {}; }\n return {\n ngModule: StoreDevtoolsModule,\n providers: [\n DevtoolsExtension,\n DevtoolsDispatcher,\n StoreDevtools,\n {\n provide: INITIAL_OPTIONS,\n useValue: options,\n },\n {\n provide: IS_EXTENSION_OR_MONITOR_PRESENT,\n deps: [REDUX_DEVTOOLS_EXTENSION, STORE_DEVTOOLS_CONFIG],\n useFactory: createIsExtensionOrMonitorPresent,\n },\n {\n provide: REDUX_DEVTOOLS_EXTENSION,\n useFactory: createReduxDevtoolsExtension,\n },\n {\n provide: STORE_DEVTOOLS_CONFIG,\n deps: [INITIAL_OPTIONS],\n useFactory: createConfig,\n },\n {\n provide: StateObservable,\n deps: [StoreDevtools],\n useFactory: createStateObservable,\n },\n {\n provide: ReducerManagerDispatcher,\n useExisting: DevtoolsDispatcher,\n },\n ],\n };\n };\n StoreDevtoolsModule.decorators = [\n { type: NgModule, args: [{},] }\n ];\n return StoreDevtoolsModule;\n}());\nexport { StoreDevtoolsModule };\n\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdHJ1bWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL21vZHVsZXMvc3RvcmUtZGV2dG9vbHMvc3JjL2luc3RydW1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBdUIsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxlQUFlLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFHeEUsT0FBTyxFQUNMLGVBQWUsRUFDZixxQkFBcUIsR0FHdEIsTUFBTSxVQUFVLENBQUM7QUFDbEIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGFBQWEsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUMvRCxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLHdCQUF3QixHQUV6QixNQUFNLGFBQWEsQ0FBQztBQUVyQixNQUFNLENBQUMsSUFBTSwrQkFBK0IsR0FBRyxJQUFJLGNBQWMsQ0FDL0QsMENBQTBDLENBQzNDLENBQUM7QUFFRixNQUFNLDRDQUNKLFNBQXdDLEVBQ3hDLE1BQTJCO0lBRTNCLE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sS0FBSyxTQUFTLENBQUM7Q0FDM0Q7QUFFRCxNQUFNO0lBQ0osSUFBTSxZQUFZLEdBQUcsOEJBQThCLENBQUM7SUFFcEQsRUFBRSxDQUFDLENBQ0QsT0FBTyxNQUFNLEtBQUssUUFBUTtRQUMxQixPQUFRLE1BQWMsQ0FBQyxZQUFZLENBQUMsS0FBSyxXQUMzQyxDQUFDLENBQUMsQ0FBQztRQUNELE1BQU0sQ0FBRSxNQUFjLENBQUMsWUFBWSxDQUFDLENBQUM7S0FDdEM7SUFBQyxJQUFJLENBQUMsQ0FBQztRQUNOLE1BQU0sQ0FBQyxJQUFJLENBQUM7S0FDYjtDQUNGO0FBRUQsTUFBTSxnQ0FDSixRQUF1QjtJQUV2QixNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztDQUN2QjtBQUVELE1BQU07SUFDSixNQUFNLENBQUMsSUFBSSxDQUFDO0NBQ2I7QUFFRCxNQUFNLENBQUMsSUFBTSxZQUFZLEdBQUcscUJBQXFCLENBQUM7QUFFbEQsTUFBTSx1QkFDSixRQUE4QjtJQUU5QixJQUFNLGVBQWUsR0FBd0I7UUFDM0MsTUFBTSxFQUFFLEtBQUs7UUFDYixPQUFPLEVBQUUsU0FBUztRQUNsQixlQUFlLEVBQUUsU0FBUztRQUMxQixjQUFjLEVBQUUsU0FBUztRQUN6QixJQUFJLEVBQUUsWUFBWTtRQUNsQixTQUFTLEVBQUUsS0FBSztRQUNoQixPQUFPLEVBQUUsS0FBSztRQUNkLFFBQVEsRUFBRSxLQUFLO0tBQ2hCLENBQUM7SUFFRixJQUFJLE9BQU8sR0FBRyxPQUFPLFFBQVEsS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7SUFDckUsSUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU87UUFDN0IsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUU7UUFDM0MsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUNWLElBQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLElBQUksT0FBTyxDQUFDO0lBQzdDLElBQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLGVBQWUsRUFBRSxFQUFFLFFBQVEsVUFBQSxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFFekUsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkMsTUFBTSxJQUFJLEtBQUssQ0FDYixrREFBZ0QsTUFBTSxDQUFDLE1BQVEsQ0FDaEUsQ0FBQztLQUNIO0lBRUQsTUFBTSxDQUFDLE1BQU0sQ0FBQztDQUNmOzs7O0lBSVEsOEJBQVUsR0FBakIsVUFBa0IsT0FBa0M7UUFBbEMsd0JBQUEsRUFBQSxZQUFrQztRQUNsRCxNQUFNLENBQUM7WUFDTCxRQUFRLEVBQUUsbUJBQW1CO1lBQzdCLFNBQVMsRUFBRTtnQkFDVCxpQkFBaUI7Z0JBQ2pCLGtCQUFrQjtnQkFDbEIsYUFBYTtnQkFDYjtvQkFDRSxPQUFPLEVBQUUsZUFBZTtvQkFDeEIsUUFBUSxFQUFFLE9BQU87aUJBQ2xCO2dCQUNEO29CQUNFLE9BQU8sRUFBRSwrQkFBK0I7b0JBQ3hDLElBQUksRUFBRSxDQUFDLHdCQUF3QixFQUFFLHFCQUFxQixDQUFDO29CQUN2RCxVQUFVLEVBQUUsaUNBQWlDO2lCQUM5QztnQkFDRDtvQkFDRSxPQUFPLEVBQUUsd0JBQXdCO29CQUNqQyxVQUFVLEVBQUUsNEJBQTRCO2lCQUN6QztnQkFDRDtvQkFDRSxPQUFPLEVBQUUscUJBQXFCO29CQUM5QixJQUFJLEVBQUUsQ0FBQyxlQUFlLENBQUM7b0JBQ3ZCLFVBQVUsRUFBRSxZQUFZO2lCQUN6QjtnQkFDRDtvQkFDRSxPQUFPLEVBQUUsZUFBZTtvQkFDeEIsSUFBSSxFQUFFLENBQUMsYUFBYSxDQUFDO29CQUNyQixVQUFVLEVBQUUscUJBQXFCO2lCQUNsQztnQkFDRDtvQkFDRSxPQUFPLEVBQUUsd0JBQXdCO29CQUNqQyxXQUFXLEVBQUUsa0JBQWtCO2lCQUNoQzthQUNGO1NBQ0YsQ0FBQztLQUNIOztnQkF0Q0YsUUFBUSxTQUFDLEVBQUU7OzhCQW5GWjs7U0FvRmEsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4sIE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZWR1Y2VyTWFuYWdlckRpc3BhdGNoZXIsIFN0YXRlT2JzZXJ2YWJsZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtcbiAgSU5JVElBTF9PUFRJT05TLFxuICBTVE9SRV9ERVZUT09MU19DT05GSUcsXG4gIFN0b3JlRGV2dG9vbHNDb25maWcsXG4gIFN0b3JlRGV2dG9vbHNPcHRpb25zLFxufSBmcm9tICcuL2NvbmZpZyc7XG5pbXBvcnQgeyBEZXZ0b29sc0Rpc3BhdGNoZXIsIFN0b3JlRGV2dG9vbHMgfSBmcm9tICcuL2RldnRvb2xzJztcbmltcG9ydCB7XG4gIERldnRvb2xzRXh0ZW5zaW9uLFxuICBSRURVWF9ERVZUT09MU19FWFRFTlNJT04sXG4gIFJlZHV4RGV2dG9vbHNFeHRlbnNpb24sXG59IGZyb20gJy4vZXh0ZW5zaW9uJztcblxuZXhwb3J0IGNvbnN0IElTX0VYVEVOU0lPTl9PUl9NT05JVE9SX1BSRVNFTlQgPSBuZXcgSW5qZWN0aW9uVG9rZW48Ym9vbGVhbj4oXG4gICdJcyBEZXZ0b29scyBFeHRlbnNpb24gb3IgTW9uaXRvciBQcmVzZW50J1xuKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUlzRXh0ZW5zaW9uT3JNb25pdG9yUHJlc2VudChcbiAgZXh0ZW5zaW9uOiBSZWR1eERldnRvb2xzRXh0ZW5zaW9uIHwgbnVsbCxcbiAgY29uZmlnOiBTdG9yZURldnRvb2xzQ29uZmlnXG4pIHtcbiAgcmV0dXJuIEJvb2xlYW4oZXh0ZW5zaW9uKSB8fCBjb25maWcubW9uaXRvciAhPT0gbm9Nb25pdG9yO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUmVkdXhEZXZ0b29sc0V4dGVuc2lvbigpIHtcbiAgY29uc3QgZXh0ZW5zaW9uS2V5ID0gJ19fUkVEVVhfREVWVE9PTFNfRVhURU5TSU9OX18nO1xuXG4gIGlmIChcbiAgICB0eXBlb2Ygd2luZG93ID09PSAnb2JqZWN0JyAmJlxuICAgIHR5cGVvZiAod2luZG93IGFzIGFueSlbZXh0ZW5zaW9uS2V5XSAhPT0gJ3VuZGVmaW5lZCdcbiAgKSB7XG4gICAgcmV0dXJuICh3aW5kb3cgYXMgYW55KVtleHRlbnNpb25LZXldO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTdGF0ZU9ic2VydmFibGUoXG4gIGRldnRvb2xzOiBTdG9yZURldnRvb2xzXG4pOiBPYnNlcnZhYmxlPGFueT4ge1xuICByZXR1cm4gZGV2dG9vbHMuc3RhdGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBub01vbml0b3IoKTogbnVsbCB7XG4gIHJldHVybiBudWxsO1xufVxuXG5leHBvcnQgY29uc3QgREVGQVVMVF9OQU1FID0gJ05nUnggU3RvcmUgRGV2VG9vbHMnO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ29uZmlnKFxuICBfb3B0aW9uczogU3RvcmVEZXZ0b29sc09wdGlvbnNcbik6IFN0b3JlRGV2dG9vbHNDb25maWcge1xuICBjb25zdCBERUZBVUxUX09QVElPTlM6IFN0b3JlRGV2dG9vbHNDb25maWcgPSB7XG4gICAgbWF4QWdlOiBmYWxzZSxcbiAgICBtb25pdG9yOiBub01vbml0b3IsXG4gICAgYWN0aW9uU2FuaXRpemVyOiB1bmRlZmluZWQsXG4gICAgc3RhdGVTYW5pdGl6ZXI6IHVuZGVmaW5lZCxcbiAgICBuYW1lOiBERUZBVUxUX05BTUUsXG4gICAgc2VyaWFsaXplOiBmYWxzZSxcbiAgICBsb2dPbmx5OiBmYWxzZSxcbiAgICBmZWF0dXJlczogZmFsc2UsXG4gIH07XG5cbiAgbGV0IG9wdGlvbnMgPSB0eXBlb2YgX29wdGlvbnMgPT09ICdmdW5jdGlvbicgPyBfb3B0aW9ucygpIDogX29wdGlvbnM7XG4gIGNvbnN0IGxvZ09ubHkgPSBvcHRpb25zLmxvZ09ubHlcbiAgICA/IHsgcGF1c2U6IHRydWUsIGV4cG9ydDogdHJ1ZSwgdGVzdDogdHJ1ZSB9XG4gICAgOiBmYWxzZTtcbiAgY29uc3QgZmVhdHVyZXMgPSBvcHRpb25zLmZlYXR1cmVzIHx8IGxvZ09ubHk7XG4gIGNvbnN0IGNvbmZpZyA9IE9iamVjdC5hc3NpZ24oe30sIERFRkFVTFRfT1BUSU9OUywgeyBmZWF0dXJlcyB9LCBvcHRpb25zKTtcblxuICBpZiAoY29uZmlnLm1heEFnZSAmJiBjb25maWcubWF4QWdlIDwgMikge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBEZXZ0b29scyAnbWF4QWdlJyBjYW5ub3QgYmUgbGVzcyB0aGFuIDIsIGdvdCAke2NvbmZpZy5tYXhBZ2V9YFxuICAgICk7XG4gIH1cblxuICByZXR1cm4gY29uZmlnO1xufVxuXG5ATmdNb2R1bGUoe30pXG5leHBvcnQgY2xhc3MgU3RvcmVEZXZ0b29sc01vZHVsZSB7XG4gIHN0YXRpYyBpbnN0cnVtZW50KG9wdGlvbnM6IFN0b3JlRGV2dG9vbHNPcHRpb25zID0ge30pOiBNb2R1bGVXaXRoUHJvdmlkZXJzIHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IFN0b3JlRGV2dG9vbHNNb2R1bGUsXG4gICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgRGV2dG9vbHNFeHRlbnNpb24sXG4gICAgICAgIERldnRvb2xzRGlzcGF0Y2hlcixcbiAgICAgICAgU3RvcmVEZXZ0b29scyxcbiAgICAgICAge1xuICAgICAgICAgIHByb3ZpZGU6IElOSVRJQUxfT1BUSU9OUyxcbiAgICAgICAgICB1c2VWYWx1ZTogb3B0aW9ucyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHByb3ZpZGU6IElTX0VYVEVOU0lPTl9PUl9NT05JVE9SX1BSRVNFTlQsXG4gICAgICAgICAgZGVwczogW1JFRFVYX0RFVlRPT0xTX0VYVEVOU0lPTiwgU1RPUkVfREVWVE9PTFNfQ09ORklHXSxcbiAgICAgICAgICB1c2VGYWN0b3J5OiBjcmVhdGVJc0V4dGVuc2lvbk9yTW9uaXRvclByZXNlbnQsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBwcm92aWRlOiBSRURVWF9ERVZUT09MU19FWFRFTlNJT04sXG4gICAgICAgICAgdXNlRmFjdG9yeTogY3JlYXRlUmVkdXhEZXZ0b29sc0V4dGVuc2lvbixcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHByb3ZpZGU6IFNUT1JFX0RFVlRPT0xTX0NPTkZJRyxcbiAgICAgICAgICBkZXBzOiBbSU5JVElBTF9PUFRJT05TXSxcbiAgICAgICAgICB1c2VGYWN0b3J5OiBjcmVhdGVDb25maWcsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBwcm92aWRlOiBTdGF0ZU9ic2VydmFibGUsXG4gICAgICAgICAgZGVwczogW1N0b3JlRGV2dG9vbHNdLFxuICAgICAgICAgIHVzZUZhY3Rvcnk6IGNyZWF0ZVN0YXRlT2JzZXJ2YWJsZSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHByb3ZpZGU6IFJlZHVjZXJNYW5hZ2VyRGlzcGF0Y2hlcixcbiAgICAgICAgICB1c2VFeGlzdGluZzogRGV2dG9vbHNEaXNwYXRjaGVyLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9O1xuICB9XG59XG4iXX0=","/**\n * DO NOT EDIT\n *\n * This file is automatically generated at build\n */\nexport * from './public_api';\n\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9tb2R1bGVzL3N0b3JlLWRldnRvb2xzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBTUEsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIERPIE5PVCBFRElUXG4gKlxuICogVGhpcyBmaWxlIGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGF0IGJ1aWxkXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWNfYXBpJztcbiJdfQ==","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\nexport { INITIAL_OPTIONS as ɵngrx_modules_store_devtools_store_devtools_i, STORE_DEVTOOLS_CONFIG as ɵngrx_modules_store_devtools_store_devtools_h } from './src/config';\nexport { DevtoolsDispatcher as ɵngrx_modules_store_devtools_store_devtools_g } from './src/devtools';\nexport { DevtoolsExtension as ɵngrx_modules_store_devtools_store_devtools_k, REDUX_DEVTOOLS_EXTENSION as ɵngrx_modules_store_devtools_store_devtools_j } from './src/extension';\nexport { IS_EXTENSION_OR_MONITOR_PRESENT as ɵngrx_modules_store_devtools_store_devtools_a, createConfig as ɵngrx_modules_store_devtools_store_devtools_f, createIsExtensionOrMonitorPresent as ɵngrx_modules_store_devtools_store_devtools_b, createReduxDevtoolsExtension as ɵngrx_modules_store_devtools_store_devtools_c, createStateObservable as ɵngrx_modules_store_devtools_store_devtools_d, noMonitor as ɵngrx_modules_store_devtools_store_devtools_e } from './src/instrument';\n\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUtZGV2dG9vbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9tb2R1bGVzL3N0b3JlLWRldnRvb2xzL3N0b3JlLWRldnRvb2xzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUM7QUFFeEIsT0FBTyxFQUFDLGVBQWUsSUFBSSw2Q0FBNkMsRUFBQyxxQkFBcUIsSUFBSSw2Q0FBNkMsRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUNySyxPQUFPLEVBQUMsa0JBQWtCLElBQUksNkNBQTZDLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRyxPQUFPLEVBQUMsaUJBQWlCLElBQUksNkNBQTZDLEVBQUMsd0JBQXdCLElBQUksNkNBQTZDLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3SyxPQUFPLEVBQUMsK0JBQStCLElBQUksNkNBQTZDLEVBQUMsWUFBWSxJQUFJLDZDQUE2QyxFQUFDLGlDQUFpQyxJQUFJLDZDQUE2QyxFQUFDLDRCQUE0QixJQUFJLDZDQUE2QyxFQUFDLHFCQUFxQixJQUFJLDZDQUE2QyxFQUFDLFNBQVMsSUFBSSw2Q0FBNkMsRUFBQyxNQUFNLGtCQUFrQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcblxuZXhwb3J0IHtJTklUSUFMX09QVElPTlMgYXMgybVuZ3J4X21vZHVsZXNfc3RvcmVfZGV2dG9vbHNfc3RvcmVfZGV2dG9vbHNfaSxTVE9SRV9ERVZUT09MU19DT05GSUcgYXMgybVuZ3J4X21vZHVsZXNfc3RvcmVfZGV2dG9vbHNfc3RvcmVfZGV2dG9vbHNfaH0gZnJvbSAnLi9zcmMvY29uZmlnJztcbmV4cG9ydCB7RGV2dG9vbHNEaXNwYXRjaGVyIGFzIMm1bmdyeF9tb2R1bGVzX3N0b3JlX2RldnRvb2xzX3N0b3JlX2RldnRvb2xzX2d9IGZyb20gJy4vc3JjL2RldnRvb2xzJztcbmV4cG9ydCB7RGV2dG9vbHNFeHRlbnNpb24gYXMgybVuZ3J4X21vZHVsZXNfc3RvcmVfZGV2dG9vbHNfc3RvcmVfZGV2dG9vbHNfayxSRURVWF9ERVZUT09MU19FWFRFTlNJT04gYXMgybVuZ3J4X21vZHVsZXNfc3RvcmVfZGV2dG9vbHNfc3RvcmVfZGV2dG9vbHNfan0gZnJvbSAnLi9zcmMvZXh0ZW5zaW9uJztcbmV4cG9ydCB7SVNfRVhURU5TSU9OX09SX01PTklUT1JfUFJFU0VOVCBhcyDJtW5ncnhfbW9kdWxlc19zdG9yZV9kZXZ0b29sc19zdG9yZV9kZXZ0b29sc19hLGNyZWF0ZUNvbmZpZyBhcyDJtW5ncnhfbW9kdWxlc19zdG9yZV9kZXZ0b29sc19zdG9yZV9kZXZ0b29sc19mLGNyZWF0ZUlzRXh0ZW5zaW9uT3JNb25pdG9yUHJlc2VudCBhcyDJtW5ncnhfbW9kdWxlc19zdG9yZV9kZXZ0b29sc19zdG9yZV9kZXZ0b29sc19iLGNyZWF0ZVJlZHV4RGV2dG9vbHNFeHRlbnNpb24gYXMgybVuZ3J4X21vZHVsZXNfc3RvcmVfZGV2dG9vbHNfc3RvcmVfZGV2dG9vbHNfYyxjcmVhdGVTdGF0ZU9ic2VydmFibGUgYXMgybVuZ3J4X21vZHVsZXNfc3RvcmVfZGV2dG9vbHNfc3RvcmVfZGV2dG9vbHNfZCxub01vbml0b3IgYXMgybVuZ3J4X21vZHVsZXNfc3RvcmVfZGV2dG9vbHNfc3RvcmVfZGV2dG9vbHNfZX0gZnJvbSAnLi9zcmMvaW5zdHJ1bWVudCc7Il19"],"names":["InjectionToken","__assign","this","Actions.PerformAction","empty","Observable","share","filter","map","takeUntil","switchMap","Injectable","Inject","__read","INIT","Actions.RESET","Actions.COMMIT","Actions.ROLLBACK","Actions.TOGGLE_ACTION","Actions.SET_ACTIONS_ACTIVE","Actions.JUMP_TO_STATE","Actions.JUMP_TO_ACTION","Actions.SWEEP","Actions.PERFORM_ACTION","Actions.IMPORT_STATE","UPDATE","ActionsSubject","merge","skip","observeOn","queueScheduler","ReplaySubject","withLatestFrom","scan","Actions.Refresh","Actions.Reset","Actions.Rollback","Actions.Commit","Actions.Sweep","Actions.ToggleAction","Actions.JumpToAction","Actions.JumpToState","Actions.ImportState","ReducerObservable","ScannedActionsSubject","ErrorHandler","INITIAL_STATE","StateObservable","ReducerManagerDispatcher","NgModule"],"mappings":"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"}
1
+ {"version":3,"file":"store-devtools.umd.js","sources":["../../../../../modules/store-devtools/src/config.ts","../../../../../modules/store-devtools/src/actions.ts","../../../../../modules/store-devtools/src/utils.ts","../../../../../modules/store-devtools/src/devtools-dispatcher.ts","../../../../../modules/store-devtools/src/extension.ts","../../../../../modules/store-devtools/src/reducer.ts","../../../../../modules/store-devtools/src/devtools.ts","../../../../../modules/store-devtools/src/instrument.ts","../../../../../modules/store-devtools/index.ts","../../../../../modules/store-devtools/store-devtools.ts"],"sourcesContent":["import { ActionReducer, Action } from '@ngrx/store';\nimport { InjectionToken, Type } from '@angular/core';\n\nexport type ActionSanitizer = (action: Action, id: number) => Action;\nexport type StateSanitizer = (state: any, index: number) => any;\nexport type SerializationOptions = {\n options?: boolean | any;\n replacer?: (key: any, value: any) => {};\n reviver?: (key: any, value: any) => {};\n immutable?: any;\n refs?: Array<any>;\n};\nexport type Predicate = (state: any, action: Action) => boolean;\n\nexport class StoreDevtoolsConfig {\n maxAge: number | false;\n monitor: ActionReducer<any, any>;\n actionSanitizer?: ActionSanitizer;\n stateSanitizer?: StateSanitizer;\n name?: string;\n serialize?: boolean | SerializationOptions;\n logOnly?: boolean;\n features?: any;\n actionsBlacklist?: string[];\n actionsWhitelist?: string[];\n predicate?: Predicate;\n}\n\nexport const STORE_DEVTOOLS_CONFIG = new InjectionToken<StoreDevtoolsConfig>(\n '@ngrx/devtools Options'\n);\nexport const INITIAL_OPTIONS = new InjectionToken<StoreDevtoolsConfig>(\n '@ngrx/devtools Initial Config'\n);\n\nexport type StoreDevtoolsOptions =\n | Partial<StoreDevtoolsConfig>\n | (() => Partial<StoreDevtoolsConfig>);\n\nexport function noMonitor(): null {\n return null;\n}\n\nexport const DEFAULT_NAME = 'NgRx Store DevTools';\n\nexport function createConfig(\n _options: StoreDevtoolsOptions\n): StoreDevtoolsConfig {\n const DEFAULT_OPTIONS: StoreDevtoolsConfig = {\n maxAge: false,\n monitor: noMonitor,\n actionSanitizer: undefined,\n stateSanitizer: undefined,\n name: DEFAULT_NAME,\n serialize: false,\n logOnly: false,\n // Add all features explicitely. This prevent buggy behavior for\n // options like \"lock\" which might otherwise not show up.\n features: {\n pause: true, // start/pause recording of dispatched actions\n lock: true, // lock/unlock dispatching actions and side effects\n persist: true, // persist states on page reloading\n export: true, // export history of actions in a file\n import: 'custom', // import history of actions from a file\n jump: true, // jump back and forth (time travelling)\n skip: true, // skip (cancel) actions\n reorder: true, // drag and drop actions in the history list\n dispatch: true, // dispatch custom actions or action creators\n test: true, // generate tests for the selected actions\n },\n };\n\n let options = typeof _options === 'function' ? _options() : _options;\n const logOnly = options.logOnly\n ? { pause: true, export: true, test: true }\n : false;\n const features = options.features || logOnly || DEFAULT_OPTIONS.features;\n const config = Object.assign({}, DEFAULT_OPTIONS, { features }, options);\n\n if (config.maxAge && config.maxAge < 2) {\n throw new Error(\n `Devtools 'maxAge' cannot be less than 2, got ${config.maxAge}`\n );\n }\n\n return config;\n}\n","import { Action } from '@ngrx/store';\n\nexport const PERFORM_ACTION = 'PERFORM_ACTION';\nexport const REFRESH = 'REFRESH';\nexport const RESET = 'RESET';\nexport const ROLLBACK = 'ROLLBACK';\nexport const COMMIT = 'COMMIT';\nexport const SWEEP = 'SWEEP';\nexport const TOGGLE_ACTION = 'TOGGLE_ACTION';\nexport const SET_ACTIONS_ACTIVE = 'SET_ACTIONS_ACTIVE';\nexport const JUMP_TO_STATE = 'JUMP_TO_STATE';\nexport const JUMP_TO_ACTION = 'JUMP_TO_ACTION';\nexport const IMPORT_STATE = 'IMPORT_STATE';\nexport const LOCK_CHANGES = 'LOCK_CHANGES';\nexport const PAUSE_RECORDING = 'PAUSE_RECORDING';\n\nexport class PerformAction implements Action {\n readonly type = PERFORM_ACTION;\n\n constructor(public action: Action, public timestamp: number) {\n if (typeof action.type === 'undefined') {\n throw new Error(\n 'Actions may not have an undefined \"type\" property. ' +\n 'Have you misspelled a constant?'\n );\n }\n }\n}\n\nexport class Refresh implements Action {\n readonly type = REFRESH;\n}\n\nexport class Reset implements Action {\n readonly type = RESET;\n\n constructor(public timestamp: number) {}\n}\n\nexport class Rollback implements Action {\n readonly type = ROLLBACK;\n\n constructor(public timestamp: number) {}\n}\n\nexport class Commit implements Action {\n readonly type = COMMIT;\n\n constructor(public timestamp: number) {}\n}\n\nexport class Sweep implements Action {\n readonly type = SWEEP;\n}\n\nexport class ToggleAction implements Action {\n readonly type = TOGGLE_ACTION;\n\n constructor(public id: number) {}\n}\n\nexport class SetActionsActive implements Action {\n readonly type = SET_ACTIONS_ACTIVE;\n\n constructor(\n public start: number,\n public end: number,\n public active: boolean = true\n ) {}\n}\n\nexport class JumpToState implements Action {\n readonly type = JUMP_TO_STATE;\n\n constructor(public index: number) {}\n}\n\nexport class JumpToAction implements Action {\n readonly type = JUMP_TO_ACTION;\n\n constructor(public actionId: number) {}\n}\n\nexport class ImportState implements Action {\n readonly type = IMPORT_STATE;\n\n constructor(public nextLiftedState: any) {}\n}\n\nexport class LockChanges implements Action {\n readonly type = LOCK_CHANGES;\n\n constructor(public status: boolean) {}\n}\n\nexport class PauseRecording implements Action {\n readonly type = PAUSE_RECORDING;\n\n constructor(public status: boolean) {}\n}\n\nexport type All =\n | PerformAction\n | Refresh\n | Reset\n | Rollback\n | Commit\n | Sweep\n | ToggleAction\n | SetActionsActive\n | JumpToState\n | JumpToAction\n | ImportState\n | LockChanges\n | PauseRecording;\n","import { Action } from '@ngrx/store';\nimport { Observable } from 'rxjs';\n\nimport * as Actions from './actions';\nimport {\n ActionSanitizer,\n StateSanitizer,\n Predicate,\n StoreDevtoolsConfig,\n} from './config';\nimport {\n ComputedState,\n LiftedAction,\n LiftedActions,\n LiftedState,\n} from './reducer';\n\nexport function difference(first: any[], second: any[]) {\n return first.filter(item => second.indexOf(item) < 0);\n}\n\n/**\n * Provides an app's view into the state of the lifted store.\n */\nexport function unliftState(liftedState: LiftedState) {\n const { computedStates, currentStateIndex } = liftedState;\n const { state } = computedStates[currentStateIndex];\n\n return state;\n}\n\nexport function unliftAction(liftedState: LiftedState): LiftedAction {\n return liftedState.actionsById[liftedState.nextActionId - 1];\n}\n\n/**\n * Lifts an app's action into an action on the lifted store.\n */\nexport function liftAction(action: Action) {\n return new Actions.PerformAction(action, +Date.now());\n}\n\n/**\n * Sanitizes given actions with given function.\n */\nexport function sanitizeActions(\n actionSanitizer: ActionSanitizer,\n actions: LiftedActions\n): LiftedActions {\n return Object.keys(actions).reduce(\n (sanitizedActions, actionIdx) => {\n const idx = Number(actionIdx);\n sanitizedActions[idx] = sanitizeAction(\n actionSanitizer,\n actions[idx],\n idx\n );\n return sanitizedActions;\n },\n <LiftedActions>{}\n );\n}\n\n/**\n * Sanitizes given action with given function.\n */\nexport function sanitizeAction(\n actionSanitizer: ActionSanitizer,\n action: LiftedAction,\n actionIdx: number\n): LiftedAction {\n return {\n ...action,\n action: actionSanitizer(action.action, actionIdx),\n };\n}\n\n/**\n * Sanitizes given states with given function.\n */\nexport function sanitizeStates(\n stateSanitizer: StateSanitizer,\n states: ComputedState[]\n): ComputedState[] {\n return states.map((computedState, idx) => ({\n state: sanitizeState(stateSanitizer, computedState.state, idx),\n error: computedState.error,\n }));\n}\n\n/**\n * Sanitizes given state with given function.\n */\nexport function sanitizeState(\n stateSanitizer: StateSanitizer,\n state: any,\n stateIdx: number\n) {\n return stateSanitizer(state, stateIdx);\n}\n\n/**\n * Read the config and tell if actions should be filtered\n */\nexport function shouldFilterActions(config: StoreDevtoolsConfig) {\n return config.predicate || config.actionsWhitelist || config.actionsBlacklist;\n}\n\n/**\n * Return a full filtered lifted state\n */\nexport function filterLiftedState(\n liftedState: LiftedState,\n predicate?: Predicate,\n whitelist?: string[],\n blacklist?: string[]\n): LiftedState {\n const filteredStagedActionIds: number[] = [];\n const filteredActionsById: LiftedActions = {};\n const filteredComputedStates: ComputedState[] = [];\n liftedState.stagedActionIds.forEach((id, idx) => {\n const liftedAction = liftedState.actionsById[id];\n if (!liftedAction) return;\n if (\n idx &&\n isActionFiltered(\n liftedState.computedStates[idx],\n liftedAction,\n predicate,\n whitelist,\n blacklist\n )\n ) {\n return;\n }\n filteredActionsById[id] = liftedAction;\n filteredStagedActionIds.push(id);\n filteredComputedStates.push(liftedState.computedStates[idx]);\n });\n return {\n ...liftedState,\n stagedActionIds: filteredStagedActionIds,\n actionsById: filteredActionsById,\n computedStates: filteredComputedStates,\n };\n}\n\n/**\n * Return true is the action should be ignored\n */\nexport function isActionFiltered(\n state: any,\n action: LiftedAction,\n predicate?: Predicate,\n whitelist?: string[],\n blacklist?: string[]\n) {\n return (\n (predicate && !predicate(state, action.action)) ||\n (whitelist && !action.action.type.match(whitelist.join('|'))) ||\n (blacklist && action.action.type.match(blacklist.join('|')))\n );\n}\n","import { ActionsSubject } from '@ngrx/store';\nimport { Injectable } from '@angular/core';\n\n@Injectable()\nexport class DevtoolsDispatcher extends ActionsSubject {}\n","import { Inject, Injectable, InjectionToken } from '@angular/core';\nimport { Action } from '@ngrx/store';\nimport { empty, of, Observable } from 'rxjs';\nimport {\n filter,\n map,\n share,\n switchMap,\n takeUntil,\n concatMap,\n debounceTime,\n timeout,\n catchError,\n take,\n} from 'rxjs/operators';\n\nimport { PERFORM_ACTION, IMPORT_STATE } from './actions';\nimport {\n SerializationOptions,\n STORE_DEVTOOLS_CONFIG,\n StoreDevtoolsConfig,\n} from './config';\nimport { LiftedAction, LiftedState } from './reducer';\nimport {\n sanitizeAction,\n sanitizeActions,\n sanitizeState,\n sanitizeStates,\n unliftState,\n isActionFiltered,\n filterLiftedState,\n shouldFilterActions,\n} from './utils';\nimport { UPDATE } from '@ngrx/store';\nimport { DevtoolsDispatcher } from './devtools-dispatcher';\n\nexport const ExtensionActionTypes = {\n START: 'START',\n DISPATCH: 'DISPATCH',\n STOP: 'STOP',\n ACTION: 'ACTION',\n};\n\nexport const REDUX_DEVTOOLS_EXTENSION = new InjectionToken<\n ReduxDevtoolsExtension\n>('Redux Devtools Extension');\n\nexport interface ReduxDevtoolsExtensionConnection {\n subscribe(listener: (change: any) => void): void;\n unsubscribe(): void;\n send(action: any, state: any): void;\n init(state?: any): void;\n error(anyErr: any): void;\n}\nexport interface ReduxDevtoolsExtensionConfig {\n features?: object | boolean;\n name: string | undefined;\n maxAge?: number;\n serialize?: boolean | SerializationOptions;\n}\n\nexport interface ReduxDevtoolsExtension {\n connect(\n options: ReduxDevtoolsExtensionConfig\n ): ReduxDevtoolsExtensionConnection;\n send(action: any, state: any, options: ReduxDevtoolsExtensionConfig): void;\n}\n\n@Injectable()\nexport class DevtoolsExtension {\n private devtoolsExtension: ReduxDevtoolsExtension;\n private extensionConnection: ReduxDevtoolsExtensionConnection;\n\n liftedActions$: Observable<any>;\n actions$: Observable<any>;\n start$: Observable<any>;\n\n constructor(\n @Inject(REDUX_DEVTOOLS_EXTENSION) devtoolsExtension: ReduxDevtoolsExtension,\n @Inject(STORE_DEVTOOLS_CONFIG) private config: StoreDevtoolsConfig,\n private dispatcher: DevtoolsDispatcher\n ) {\n this.devtoolsExtension = devtoolsExtension;\n this.createActionStreams();\n }\n\n notify(action: LiftedAction, state: LiftedState) {\n if (!this.devtoolsExtension) {\n return;\n }\n // Check to see if the action requires a full update of the liftedState.\n // If it is a simple action generated by the user's app and the recording\n // is not locked/paused, only send the action and the current state (fast).\n //\n // A full liftedState update (slow: serializes the entire liftedState) is\n // only required when:\n // a) redux-devtools-extension fires the @@Init action (ignored by\n // @ngrx/store-devtools)\n // b) an action is generated by an @ngrx module (e.g. @ngrx/effects/init\n // or @ngrx/store/update-reducers)\n // c) the state has been recomputed due to time-traveling\n // d) any action that is not a PerformAction to err on the side of\n // caution.\n if (action.type === PERFORM_ACTION) {\n if (state.isLocked || state.isPaused) {\n return;\n }\n\n const currentState = unliftState(state);\n if (\n shouldFilterActions(this.config) &&\n isActionFiltered(\n currentState,\n action,\n this.config.predicate,\n this.config.actionsWhitelist,\n this.config.actionsBlacklist\n )\n ) {\n return;\n }\n const sanitizedState = this.config.stateSanitizer\n ? sanitizeState(\n this.config.stateSanitizer,\n currentState,\n state.currentStateIndex\n )\n : currentState;\n const sanitizedAction = this.config.actionSanitizer\n ? sanitizeAction(\n this.config.actionSanitizer,\n action,\n state.nextActionId\n )\n : action;\n this.extensionConnection.send(sanitizedAction, sanitizedState);\n } else {\n // Requires full state update\n const sanitizedLiftedState = {\n ...state,\n stagedActionIds: state.stagedActionIds,\n actionsById: this.config.actionSanitizer\n ? sanitizeActions(this.config.actionSanitizer, state.actionsById)\n : state.actionsById,\n computedStates: this.config.stateSanitizer\n ? sanitizeStates(this.config.stateSanitizer, state.computedStates)\n : state.computedStates,\n };\n this.devtoolsExtension.send(\n null,\n sanitizedLiftedState,\n this.getExtensionConfig(this.config)\n );\n }\n }\n\n private createChangesObservable(): Observable<any> {\n if (!this.devtoolsExtension) {\n return empty();\n }\n\n return new Observable(subscriber => {\n const connection = this.devtoolsExtension.connect(\n this.getExtensionConfig(this.config)\n );\n this.extensionConnection = connection;\n connection.init();\n\n connection.subscribe((change: any) => subscriber.next(change));\n return connection.unsubscribe;\n });\n }\n\n private createActionStreams() {\n // Listens to all changes\n const changes$ = this.createChangesObservable().pipe(share());\n\n // Listen for the start action\n const start$ = changes$.pipe(\n filter((change: any) => change.type === ExtensionActionTypes.START)\n );\n\n // Listen for the stop action\n const stop$ = changes$.pipe(\n filter((change: any) => change.type === ExtensionActionTypes.STOP)\n );\n\n // Listen for lifted actions\n const liftedActions$ = changes$.pipe(\n filter(change => change.type === ExtensionActionTypes.DISPATCH),\n map(change => this.unwrapAction(change.payload)),\n concatMap((action: any) => {\n if (action.type === IMPORT_STATE) {\n // State imports may happen in two situations:\n // 1. Explicitly by user\n // 2. User activated the \"persist state accross reloads\" option\n // and now the state is imported during reload.\n // Because of option 2, we need to give possible\n // lazy loaded reducers time to instantiate.\n // As soon as there is no UPDATE action within 1 second,\n // it is assumed that all reducers are loaded.\n return this.dispatcher.pipe(\n filter(action => action.type === UPDATE),\n timeout(1000),\n debounceTime(1000),\n map(() => action),\n catchError(() => of(action)),\n take(1)\n );\n } else {\n return of(action);\n }\n })\n );\n\n // Listen for unlifted actions\n const actions$ = changes$.pipe(\n filter(change => change.type === ExtensionActionTypes.ACTION),\n map(change => this.unwrapAction(change.payload))\n );\n\n const actionsUntilStop$ = actions$.pipe(takeUntil(stop$));\n const liftedUntilStop$ = liftedActions$.pipe(takeUntil(stop$));\n this.start$ = start$.pipe(takeUntil(stop$));\n\n // Only take the action sources between the start/stop events\n this.actions$ = this.start$.pipe(switchMap(() => actionsUntilStop$));\n this.liftedActions$ = this.start$.pipe(switchMap(() => liftedUntilStop$));\n }\n\n private unwrapAction(action: Action) {\n return typeof action === 'string' ? eval(`(${action})`) : action;\n }\n\n private getExtensionConfig(config: StoreDevtoolsConfig) {\n const extensionOptions: ReduxDevtoolsExtensionConfig = {\n name: config.name,\n features: config.features,\n serialize: config.serialize,\n // The action/state sanitizers are not added to the config\n // because sanitation is done in this class already.\n // It is done before sending it to the devtools extension for consistency:\n // - If we call extensionConnection.send(...),\n // the extension would call the sanitizers.\n // - If we call devtoolsExtension.send(...) (aka full state update),\n // the extension would NOT call the sanitizers, so we have to do it ourselves.\n };\n if (config.maxAge !== false /* support === 0 */) {\n extensionOptions.maxAge = config.maxAge;\n }\n return extensionOptions;\n }\n}\n","import { ErrorHandler } from '@angular/core';\nimport {\n Action,\n ActionReducer,\n ActionsSubject,\n ReducerManager,\n UPDATE,\n INIT,\n} from '@ngrx/store';\nimport { difference, liftAction } from './utils';\nimport * as DevtoolsActions from './actions';\nimport { StoreDevtoolsConfig, StateSanitizer } from './config';\nimport { PerformAction } from './actions';\n\nexport type InitAction = {\n readonly type: typeof INIT;\n};\n\nexport type UpdateReducerAction = {\n readonly type: typeof UPDATE;\n};\n\nexport type CoreActions = InitAction | UpdateReducerAction;\nexport type Actions = DevtoolsActions.All | CoreActions;\n\nexport const INIT_ACTION = { type: INIT };\n\nexport const RECOMPUTE = '@ngrx/store-devtools/recompute' as '@ngrx/store-devtools/recompute';\nexport const RECOMPUTE_ACTION = { type: RECOMPUTE };\n\nexport interface ComputedState {\n state: any;\n error: any;\n}\n\nexport interface LiftedAction {\n type: string;\n action: Action;\n}\n\nexport interface LiftedActions {\n [id: number]: LiftedAction;\n}\n\nexport interface LiftedState {\n monitorState: any;\n nextActionId: number;\n actionsById: LiftedActions;\n stagedActionIds: number[];\n skippedActionIds: number[];\n committedState: any;\n currentStateIndex: number;\n computedStates: ComputedState[];\n isLocked: boolean;\n isPaused: boolean;\n}\n\n/**\n * Computes the next entry in the log by applying an action.\n */\nfunction computeNextEntry(\n reducer: ActionReducer<any, any>,\n action: Action,\n state: any,\n error: any,\n errorHandler: ErrorHandler\n) {\n if (error) {\n return {\n state,\n error: 'Interrupted by an error up the chain',\n };\n }\n\n let nextState = state;\n let nextError;\n try {\n nextState = reducer(state, action);\n } catch (err) {\n nextError = err.toString();\n errorHandler.handleError(err.stack || err);\n }\n\n return {\n state: nextState,\n error: nextError,\n };\n}\n\n/**\n * Runs the reducer on invalidated actions to get a fresh computation log.\n */\nfunction recomputeStates(\n computedStates: ComputedState[],\n minInvalidatedStateIndex: number,\n reducer: ActionReducer<any, any>,\n committedState: any,\n actionsById: LiftedActions,\n stagedActionIds: number[],\n skippedActionIds: number[],\n errorHandler: ErrorHandler,\n isPaused: boolean\n) {\n // Optimization: exit early and return the same reference\n // if we know nothing could have changed.\n if (\n minInvalidatedStateIndex >= computedStates.length &&\n computedStates.length === stagedActionIds.length\n ) {\n return computedStates;\n }\n\n const nextComputedStates = computedStates.slice(0, minInvalidatedStateIndex);\n // If the recording is paused, recompute all states up until the pause state,\n // else recompute all states.\n const lastIncludedActionId = stagedActionIds.length - (isPaused ? 1 : 0);\n for (let i = minInvalidatedStateIndex; i < lastIncludedActionId; i++) {\n const actionId = stagedActionIds[i];\n const action = actionsById[actionId].action;\n\n const previousEntry = nextComputedStates[i - 1];\n const previousState = previousEntry ? previousEntry.state : committedState;\n const previousError = previousEntry ? previousEntry.error : undefined;\n\n const shouldSkip = skippedActionIds.indexOf(actionId) > -1;\n const entry: ComputedState = shouldSkip\n ? previousEntry\n : computeNextEntry(\n reducer,\n action,\n previousState,\n previousError,\n errorHandler\n );\n\n nextComputedStates.push(entry);\n }\n // If the recording is paused, the last state will not be recomputed,\n // because it's essentially not part of the state history.\n if (isPaused) {\n nextComputedStates.push(computedStates[computedStates.length - 1]);\n }\n\n return nextComputedStates;\n}\n\nexport function liftInitialState(\n initialCommittedState?: any,\n monitorReducer?: any\n): LiftedState {\n return {\n monitorState: monitorReducer(undefined, {}),\n nextActionId: 1,\n actionsById: { 0: liftAction(INIT_ACTION) },\n stagedActionIds: [0],\n skippedActionIds: [],\n committedState: initialCommittedState,\n currentStateIndex: 0,\n computedStates: [],\n isLocked: false,\n isPaused: false,\n };\n}\n\n/**\n * Creates a history state reducer from an app's reducer.\n */\nexport function liftReducerWith(\n initialCommittedState: any,\n initialLiftedState: LiftedState,\n errorHandler: ErrorHandler,\n monitorReducer?: any,\n options: Partial<StoreDevtoolsConfig> = {}\n) {\n /**\n * Manages how the history actions modify the history state.\n */\n return (\n reducer: ActionReducer<any, any>\n ): ActionReducer<LiftedState, Actions> => (liftedState, liftedAction) => {\n let {\n monitorState,\n actionsById,\n nextActionId,\n stagedActionIds,\n skippedActionIds,\n committedState,\n currentStateIndex,\n computedStates,\n isLocked,\n isPaused,\n } =\n liftedState || initialLiftedState;\n\n if (!liftedState) {\n // Prevent mutating initialLiftedState\n actionsById = Object.create(actionsById);\n }\n\n function commitExcessActions(n: number) {\n // Auto-commits n-number of excess actions.\n let excess = n;\n let idsToDelete = stagedActionIds.slice(1, excess + 1);\n\n for (let i = 0; i < idsToDelete.length; i++) {\n if (computedStates[i + 1].error) {\n // Stop if error is found. Commit actions up to error.\n excess = i;\n idsToDelete = stagedActionIds.slice(1, excess + 1);\n break;\n } else {\n delete actionsById[idsToDelete[i]];\n }\n }\n\n skippedActionIds = skippedActionIds.filter(\n id => idsToDelete.indexOf(id) === -1\n );\n stagedActionIds = [0, ...stagedActionIds.slice(excess + 1)];\n committedState = computedStates[excess].state;\n computedStates = computedStates.slice(excess);\n currentStateIndex =\n currentStateIndex > excess ? currentStateIndex - excess : 0;\n }\n\n function commitChanges() {\n // Consider the last committed state the new starting point.\n // Squash any staged actions into a single committed state.\n actionsById = { 0: liftAction(INIT_ACTION) };\n nextActionId = 1;\n stagedActionIds = [0];\n skippedActionIds = [];\n committedState = computedStates[currentStateIndex].state;\n currentStateIndex = 0;\n computedStates = [];\n }\n\n // By default, aggressively recompute every state whatever happens.\n // This has O(n) performance, so we'll override this to a sensible\n // value whenever we feel like we don't have to recompute the states.\n let minInvalidatedStateIndex = 0;\n\n switch (liftedAction.type) {\n case DevtoolsActions.LOCK_CHANGES: {\n isLocked = liftedAction.status;\n minInvalidatedStateIndex = Infinity;\n break;\n }\n case DevtoolsActions.PAUSE_RECORDING: {\n isPaused = liftedAction.status;\n if (isPaused) {\n // Add a pause action to signal the devtools-user the recording is paused.\n // The corresponding state will be overwritten on each update to always contain\n // the latest state (see Actions.PERFORM_ACTION).\n stagedActionIds = [...stagedActionIds, nextActionId];\n actionsById[nextActionId] = new PerformAction(\n {\n type: '@ngrx/devtools/pause',\n },\n +Date.now()\n );\n nextActionId++;\n minInvalidatedStateIndex = stagedActionIds.length - 1;\n computedStates = computedStates.concat(\n computedStates[computedStates.length - 1]\n );\n\n if (currentStateIndex === stagedActionIds.length - 2) {\n currentStateIndex++;\n }\n minInvalidatedStateIndex = Infinity;\n } else {\n commitChanges();\n }\n break;\n }\n case DevtoolsActions.RESET: {\n // Get back to the state the store was created with.\n actionsById = { 0: liftAction(INIT_ACTION) };\n nextActionId = 1;\n stagedActionIds = [0];\n skippedActionIds = [];\n committedState = initialCommittedState;\n currentStateIndex = 0;\n computedStates = [];\n break;\n }\n case DevtoolsActions.COMMIT: {\n commitChanges();\n break;\n }\n case DevtoolsActions.ROLLBACK: {\n // Forget about any staged actions.\n // Start again from the last committed state.\n actionsById = { 0: liftAction(INIT_ACTION) };\n nextActionId = 1;\n stagedActionIds = [0];\n skippedActionIds = [];\n currentStateIndex = 0;\n computedStates = [];\n break;\n }\n case DevtoolsActions.TOGGLE_ACTION: {\n // Toggle whether an action with given ID is skipped.\n // Being skipped means it is a no-op during the computation.\n const { id: actionId } = liftedAction;\n const index = skippedActionIds.indexOf(actionId);\n if (index === -1) {\n skippedActionIds = [actionId, ...skippedActionIds];\n } else {\n skippedActionIds = skippedActionIds.filter(id => id !== actionId);\n }\n // Optimization: we know history before this action hasn't changed\n minInvalidatedStateIndex = stagedActionIds.indexOf(actionId);\n break;\n }\n case DevtoolsActions.SET_ACTIONS_ACTIVE: {\n // Toggle whether an action with given ID is skipped.\n // Being skipped means it is a no-op during the computation.\n const { start, end, active } = liftedAction;\n const actionIds = [];\n for (let i = start; i < end; i++) actionIds.push(i);\n if (active) {\n skippedActionIds = difference(skippedActionIds, actionIds);\n } else {\n skippedActionIds = [...skippedActionIds, ...actionIds];\n }\n\n // Optimization: we know history before this action hasn't changed\n minInvalidatedStateIndex = stagedActionIds.indexOf(start);\n break;\n }\n case DevtoolsActions.JUMP_TO_STATE: {\n // Without recomputing anything, move the pointer that tell us\n // which state is considered the current one. Useful for sliders.\n currentStateIndex = liftedAction.index;\n // Optimization: we know the history has not changed.\n minInvalidatedStateIndex = Infinity;\n break;\n }\n case DevtoolsActions.JUMP_TO_ACTION: {\n // Jumps to a corresponding state to a specific action.\n // Useful when filtering actions.\n const index = stagedActionIds.indexOf(liftedAction.actionId);\n if (index !== -1) currentStateIndex = index;\n minInvalidatedStateIndex = Infinity;\n break;\n }\n case DevtoolsActions.SWEEP: {\n // Forget any actions that are currently being skipped.\n stagedActionIds = difference(stagedActionIds, skippedActionIds);\n skippedActionIds = [];\n currentStateIndex = Math.min(\n currentStateIndex,\n stagedActionIds.length - 1\n );\n break;\n }\n case DevtoolsActions.PERFORM_ACTION: {\n // Ignore action and return state as is if recording is locked\n if (isLocked) {\n return liftedState || initialLiftedState;\n }\n\n if (isPaused) {\n // If recording is paused, overwrite the last state\n // (corresponds to the pause action) and keep everything else as is.\n // This way, the app gets the new current state while the devtools\n // do not record another action.\n const lastState = computedStates[computedStates.length - 1];\n computedStates = [\n ...computedStates.slice(0, -1),\n computeNextEntry(\n reducer,\n liftedAction.action,\n lastState.state,\n lastState.error,\n errorHandler\n ),\n ];\n minInvalidatedStateIndex = Infinity;\n break;\n }\n\n // Auto-commit as new actions come in.\n if (options.maxAge && stagedActionIds.length === options.maxAge) {\n commitExcessActions(1);\n }\n\n if (currentStateIndex === stagedActionIds.length - 1) {\n currentStateIndex++;\n }\n const actionId = nextActionId++;\n // Mutation! This is the hottest path, and we optimize on purpose.\n // It is safe because we set a new key in a cache dictionary.\n actionsById[actionId] = liftedAction;\n\n stagedActionIds = [...stagedActionIds, actionId];\n // Optimization: we know that only the new action needs computing.\n minInvalidatedStateIndex = stagedActionIds.length - 1;\n break;\n }\n case DevtoolsActions.IMPORT_STATE: {\n // Completely replace everything.\n ({\n monitorState,\n actionsById,\n nextActionId,\n stagedActionIds,\n skippedActionIds,\n committedState,\n currentStateIndex,\n computedStates,\n isLocked,\n // prettier-ignore\n isPaused\n } = liftedAction.nextLiftedState);\n break;\n }\n case INIT: {\n // Always recompute states on hot reload and init.\n minInvalidatedStateIndex = 0;\n\n if (options.maxAge && stagedActionIds.length > options.maxAge) {\n // States must be recomputed before committing excess.\n computedStates = recomputeStates(\n computedStates,\n minInvalidatedStateIndex,\n reducer,\n committedState,\n actionsById,\n stagedActionIds,\n skippedActionIds,\n errorHandler,\n isPaused\n );\n\n commitExcessActions(stagedActionIds.length - options.maxAge);\n\n // Avoid double computation.\n minInvalidatedStateIndex = Infinity;\n }\n\n break;\n }\n case UPDATE: {\n const stateHasErrors =\n computedStates.filter(state => state.error).length > 0;\n\n if (stateHasErrors) {\n // Recompute all states\n minInvalidatedStateIndex = 0;\n\n if (options.maxAge && stagedActionIds.length > options.maxAge) {\n // States must be recomputed before committing excess.\n computedStates = recomputeStates(\n computedStates,\n minInvalidatedStateIndex,\n reducer,\n committedState,\n actionsById,\n stagedActionIds,\n skippedActionIds,\n errorHandler,\n isPaused\n );\n\n commitExcessActions(stagedActionIds.length - options.maxAge);\n\n // Avoid double computation.\n minInvalidatedStateIndex = Infinity;\n }\n } else {\n // If not paused/locked, add a new action to signal devtools-user\n // that there was a reducer update.\n if (!isPaused && !isLocked) {\n if (currentStateIndex === stagedActionIds.length - 1) {\n currentStateIndex++;\n }\n\n // Add a new action to only recompute state\n const actionId = nextActionId++;\n actionsById[actionId] = new PerformAction(\n liftedAction,\n +Date.now()\n );\n stagedActionIds = [...stagedActionIds, actionId];\n\n minInvalidatedStateIndex = stagedActionIds.length - 1;\n\n computedStates = recomputeStates(\n computedStates,\n minInvalidatedStateIndex,\n reducer,\n committedState,\n actionsById,\n stagedActionIds,\n skippedActionIds,\n errorHandler,\n isPaused\n );\n }\n\n // Recompute state history with latest reducer and update action\n computedStates = computedStates.map(cmp => ({\n ...cmp,\n state: reducer(cmp.state, RECOMPUTE_ACTION),\n }));\n\n currentStateIndex = stagedActionIds.length - 1;\n\n if (options.maxAge && stagedActionIds.length > options.maxAge) {\n commitExcessActions(stagedActionIds.length - options.maxAge);\n }\n\n // Avoid double computation.\n minInvalidatedStateIndex = Infinity;\n }\n\n break;\n }\n default: {\n // If the action is not recognized, it's a monitor action.\n // Optimization: a monitor action can't change history.\n minInvalidatedStateIndex = Infinity;\n break;\n }\n }\n\n computedStates = recomputeStates(\n computedStates,\n minInvalidatedStateIndex,\n reducer,\n committedState,\n actionsById,\n stagedActionIds,\n skippedActionIds,\n errorHandler,\n isPaused\n );\n monitorState = monitorReducer(monitorState, liftedAction);\n\n return {\n monitorState,\n actionsById,\n nextActionId,\n stagedActionIds,\n skippedActionIds,\n committedState,\n currentStateIndex,\n computedStates,\n isLocked,\n isPaused,\n };\n };\n}\n","import { Injectable, Inject, ErrorHandler } from '@angular/core';\nimport {\n Action,\n ActionReducer,\n ActionsSubject,\n INITIAL_STATE,\n ReducerObservable,\n ScannedActionsSubject,\n} from '@ngrx/store';\nimport {\n merge,\n Observable,\n Observer,\n queueScheduler,\n ReplaySubject,\n Subscription,\n} from 'rxjs';\nimport { map, observeOn, scan, skip, withLatestFrom } from 'rxjs/operators';\n\nimport * as Actions from './actions';\nimport { STORE_DEVTOOLS_CONFIG, StoreDevtoolsConfig } from './config';\nimport { DevtoolsExtension } from './extension';\nimport { LiftedState, liftInitialState, liftReducerWith } from './reducer';\nimport { liftAction, unliftState, shouldFilterActions, filterLiftedState } from './utils';\nimport { DevtoolsDispatcher } from './devtools-dispatcher';\nimport { PERFORM_ACTION } from './actions';\n\n@Injectable()\nexport class StoreDevtools implements Observer<any> {\n private stateSubscription: Subscription;\n private extensionStartSubscription: Subscription;\n public dispatcher: ActionsSubject;\n public liftedState: Observable<LiftedState>;\n public state: Observable<any>;\n\n constructor(\n dispatcher: DevtoolsDispatcher,\n actions$: ActionsSubject,\n reducers$: ReducerObservable,\n extension: DevtoolsExtension,\n scannedActions: ScannedActionsSubject,\n errorHandler: ErrorHandler,\n @Inject(INITIAL_STATE) initialState: any,\n @Inject(STORE_DEVTOOLS_CONFIG) config: StoreDevtoolsConfig\n ) {\n const liftedInitialState = liftInitialState(initialState, config.monitor);\n const liftReducer = liftReducerWith(\n initialState,\n liftedInitialState,\n errorHandler,\n config.monitor,\n config\n );\n\n const liftedAction$ = merge(\n merge(actions$.asObservable().pipe(skip(1)), extension.actions$).pipe(\n map(liftAction)\n ),\n dispatcher,\n extension.liftedActions$\n ).pipe(observeOn(queueScheduler));\n\n const liftedReducer$ = reducers$.pipe(map(liftReducer));\n\n const liftedStateSubject = new ReplaySubject<LiftedState>(1);\n\n const liftedStateSubscription = liftedAction$\n .pipe(\n withLatestFrom(liftedReducer$),\n scan<\n [any, ActionReducer<LiftedState, Actions.All>],\n {\n state: LiftedState;\n action: any;\n }\n >(\n ({ state: liftedState }, [action, reducer]) => {\n let reducedLiftedState = reducer(liftedState, action);\n // On full state update\n // If we have actions filters, we must filter completly our lifted state to be sync with the extension\n if (action.type !== PERFORM_ACTION && shouldFilterActions(config)) {\n reducedLiftedState = filterLiftedState(\n reducedLiftedState,\n config.predicate,\n config.actionsWhitelist,\n config.actionsBlacklist\n );\n }\n // Extension should be sent the sanitized lifted state\n extension.notify(action, reducedLiftedState);\n return { state: reducedLiftedState, action };\n },\n { state: liftedInitialState, action: null as any }\n )\n )\n .subscribe(({ state, action }) => {\n liftedStateSubject.next(state);\n\n if (action.type === Actions.PERFORM_ACTION) {\n const unliftedAction = (action as Actions.PerformAction).action;\n\n scannedActions.next(unliftedAction);\n }\n });\n\n const extensionStartSubscription = extension.start$.subscribe(() => {\n this.refresh();\n });\n\n const liftedState$ = liftedStateSubject.asObservable() as Observable<\n LiftedState\n >;\n const state$ = liftedState$.pipe(map(unliftState));\n\n this.extensionStartSubscription = extensionStartSubscription;\n this.stateSubscription = liftedStateSubscription;\n this.dispatcher = dispatcher;\n this.liftedState = liftedState$;\n this.state = state$;\n }\n\n dispatch(action: Action) {\n this.dispatcher.next(action);\n }\n\n next(action: any) {\n this.dispatcher.next(action);\n }\n\n error(error: any) { }\n\n complete() { }\n\n performAction(action: any) {\n this.dispatch(new Actions.PerformAction(action, +Date.now()));\n }\n\n refresh() {\n this.dispatch(new Actions.Refresh());\n }\n\n reset() {\n this.dispatch(new Actions.Reset(+Date.now()));\n }\n\n rollback() {\n this.dispatch(new Actions.Rollback(+Date.now()));\n }\n\n commit() {\n this.dispatch(new Actions.Commit(+Date.now()));\n }\n\n sweep() {\n this.dispatch(new Actions.Sweep());\n }\n\n toggleAction(id: number) {\n this.dispatch(new Actions.ToggleAction(id));\n }\n\n jumpToAction(actionId: number) {\n this.dispatch(new Actions.JumpToAction(actionId));\n }\n\n jumpToState(index: number) {\n this.dispatch(new Actions.JumpToState(index));\n }\n\n importState(nextLiftedState: any) {\n this.dispatch(new Actions.ImportState(nextLiftedState));\n }\n\n lockChanges(status: boolean) {\n this.dispatch(new Actions.LockChanges(status));\n }\n\n pauseRecording(status: boolean) {\n this.dispatch(new Actions.PauseRecording(status));\n }\n}\n","import { InjectionToken, ModuleWithProviders, NgModule } from '@angular/core';\nimport { ReducerManagerDispatcher, StateObservable } from '@ngrx/store';\nimport { Observable } from 'rxjs';\n\nimport {\n INITIAL_OPTIONS,\n STORE_DEVTOOLS_CONFIG,\n StoreDevtoolsConfig,\n StoreDevtoolsOptions,\n noMonitor,\n createConfig,\n} from './config';\nimport { StoreDevtools } from './devtools';\nimport {\n DevtoolsExtension,\n REDUX_DEVTOOLS_EXTENSION,\n ReduxDevtoolsExtension,\n} from './extension';\nimport { DevtoolsDispatcher } from './devtools-dispatcher';\n\nexport const IS_EXTENSION_OR_MONITOR_PRESENT = new InjectionToken<boolean>(\n 'Is Devtools Extension or Monitor Present'\n);\n\nexport function createIsExtensionOrMonitorPresent(\n extension: ReduxDevtoolsExtension | null,\n config: StoreDevtoolsConfig\n) {\n return Boolean(extension) || config.monitor !== noMonitor;\n}\n\nexport function createReduxDevtoolsExtension() {\n const extensionKey = '__REDUX_DEVTOOLS_EXTENSION__';\n\n if (\n typeof window === 'object' &&\n typeof (window as any)[extensionKey] !== 'undefined'\n ) {\n return (window as any)[extensionKey];\n } else {\n return null;\n }\n}\n\nexport function createStateObservable(\n devtools: StoreDevtools\n): Observable<any> {\n return devtools.state;\n}\n\n@NgModule({})\nexport class StoreDevtoolsModule {\n static instrument(\n options: StoreDevtoolsOptions = {}\n ): ModuleWithProviders<StoreDevtoolsModule> {\n return {\n ngModule: StoreDevtoolsModule,\n providers: [\n DevtoolsExtension,\n DevtoolsDispatcher,\n StoreDevtools,\n {\n provide: INITIAL_OPTIONS,\n useValue: options,\n },\n {\n provide: IS_EXTENSION_OR_MONITOR_PRESENT,\n deps: [REDUX_DEVTOOLS_EXTENSION, STORE_DEVTOOLS_CONFIG],\n useFactory: createIsExtensionOrMonitorPresent,\n },\n {\n provide: REDUX_DEVTOOLS_EXTENSION,\n useFactory: createReduxDevtoolsExtension,\n },\n {\n provide: STORE_DEVTOOLS_CONFIG,\n deps: [INITIAL_OPTIONS],\n useFactory: createConfig,\n },\n {\n provide: StateObservable,\n deps: [StoreDevtools],\n useFactory: createStateObservable,\n },\n {\n provide: ReducerManagerDispatcher,\n useExisting: DevtoolsDispatcher,\n },\n ],\n };\n }\n}\n","/**\n * DO NOT EDIT\n *\n * This file is automatically generated at build\n */\n\nexport * from './public_api';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n\nexport {INITIAL_OPTIONS as ɵngrx_modules_store_devtools_store_devtools_f,STORE_DEVTOOLS_CONFIG as ɵngrx_modules_store_devtools_store_devtools_e,createConfig as ɵngrx_modules_store_devtools_store_devtools_h,noMonitor as ɵngrx_modules_store_devtools_store_devtools_g} from './src/config';\nexport {DevtoolsDispatcher as ɵngrx_modules_store_devtools_store_devtools_k} from './src/devtools-dispatcher';\nexport {DevtoolsExtension as ɵngrx_modules_store_devtools_store_devtools_j,REDUX_DEVTOOLS_EXTENSION as ɵngrx_modules_store_devtools_store_devtools_i} from './src/extension';\nexport {IS_EXTENSION_OR_MONITOR_PRESENT as ɵngrx_modules_store_devtools_store_devtools_a,createIsExtensionOrMonitorPresent as ɵngrx_modules_store_devtools_store_devtools_b,createReduxDevtoolsExtension as ɵngrx_modules_store_devtools_store_devtools_c,createStateObservable as ɵngrx_modules_store_devtools_store_devtools_d} from './src/instrument';"],"names":["InjectionToken","Actions.PerformAction","Injectable","ActionsSubject","empty","Observable","share","filter","map","concatMap","UPDATE","timeout","debounceTime","catchError","of","take","takeUntil","switchMap","Inject","INIT","DevtoolsActions.LOCK_CHANGES","DevtoolsActions.PAUSE_RECORDING","DevtoolsActions.RESET","DevtoolsActions.COMMIT","DevtoolsActions.ROLLBACK","DevtoolsActions.TOGGLE_ACTION","DevtoolsActions.SET_ACTIONS_ACTIVE","DevtoolsActions.JUMP_TO_STATE","DevtoolsActions.JUMP_TO_ACTION","DevtoolsActions.SWEEP","DevtoolsActions.PERFORM_ACTION","DevtoolsActions.IMPORT_STATE","merge","skip","observeOn","queueScheduler","ReplaySubject","withLatestFrom","scan","Actions.PERFORM_ACTION","Actions.Refresh","Actions.Reset","Actions.Rollback","Actions.Commit","Actions.Sweep","Actions.ToggleAction","Actions.JumpToAction","Actions.JumpToState","Actions.ImportState","Actions.LockChanges","Actions.PauseRecording","__param","INITIAL_STATE","ReducerObservable","ScannedActionsSubject","ErrorHandler","StateObservable","ReducerManagerDispatcher","NgModule"],"mappings":"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"}