@ngrx/store-devtools 9.1.0 → 9.2.1

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.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license NgRx 9.1.0
2
+ * @license NgRx 9.2.1
3
3
  * (c) 2015-2018 Brandon Roberts, Mike Ryan, Rob Wormald, Victor Savkin
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license NgRx 9.1.0
2
+ * @license NgRx 9.2.1
3
3
  * (c) 2015-2018 Brandon Roberts, Mike Ryan, Rob Wormald, Victor Savkin
4
4
  * License: MIT
5
5
  */
@@ -1 +1 @@
1
- {"version":3,"sources":["modules/store-devtools/store-devtools.umd.js"],"names":["global","factory","exports","module","require","define","amd","self","ngrx","storeDevtools","tslib","ng","core","store","rxjs","operators","this","StoreDevtoolsConfig","maxAge","STORE_DEVTOOLS_CONFIG","InjectionToken","INITIAL_OPTIONS","noMonitor","DEFAULT_NAME","createConfig","_options","DEFAULT_OPTIONS","monitor","actionSanitizer","undefined","stateSanitizer","name","serialize","logOnly","features","pause","lock","persist","export","import","jump","skip","reorder","dispatch","test","options","config","Object","assign","Error","PERFORM_ACTION","REFRESH","RESET","ROLLBACK","COMMIT","SWEEP","TOGGLE_ACTION","SET_ACTIONS_ACTIVE","JUMP_TO_STATE","JUMP_TO_ACTION","IMPORT_STATE","LOCK_CHANGES","PAUSE_RECORDING","PerformAction","action","timestamp","type","Refresh","Reset","Rollback","Commit","Sweep","ToggleAction","id","SetActionsActive","start","end","active","JumpToState","index","JumpToAction","actionId","ImportState","nextLiftedState","LockChanges","status","PauseRecording","DevtoolsDispatcher","_super","apply","arguments","__extends","__decorate","Injectable","ActionsSubject","difference","first","second","filter","item","indexOf","unliftState","liftedState","computedStates","currentStateIndex","length","state","unliftAction","actionsById","nextActionId","liftAction","Date","now","sanitizeActions","actions","keys","reduce","sanitizedActions","actionIdx","idx","Number","sanitizeAction","__assign","sanitizeStates","states","map","computedState","sanitizeState","error","stateIdx","shouldFilterActions","predicate","actionsSafelist","actionsBlocklist","filterLiftedState","safelist","blocklist","filteredStagedActionIds","filteredActionsById","filteredComputedStates","stagedActionIds","forEach","liftedAction","isActionFiltered","push","blockedlist","predicateMatch","safelistMatch","match","s","escapeRegExp","join","blocklistMatch","replace","ExtensionActionTypes","START","DISPATCH","STOP","ACTION","REDUX_DEVTOOLS_EXTENSION","DevtoolsExtension","devtoolsExtension","dispatcher","createActionStreams","prototype","notify","_this","isLocked","isPaused","currentState","sanitizedState_1","sanitizedAction_1","sendToReduxDevtools","extensionConnection","send","sanitizedLiftedState_1","getExtensionConfig","createChangesObservable","Observable","subscriber","connection","connect","init","subscribe","change","next","unsubscribe","empty","changes$","pipe","share","start$","stop$","liftedActions$","unwrapAction","payload","concatMap","UPDATE","timeout","debounceTime","catchError","of","take","actionsUntilStop$","takeUntil","liftedUntilStop$","actions$","switchMap","eval","extensionOptions","err","console","warn","__param","Inject","__metadata","INIT_ACTION","INIT","RECOMPUTE","RECOMPUTE_ACTION","computeNextEntry","reducer","errorHandler","nextError","nextState","toString","handleError","stack","recomputeStates","minInvalidatedStateIndex","committedState","skippedActionIds","nextComputedStates","slice","lastIncludedActionId","i","previousEntry","previousState","previousError","entry","liftInitialState","initialCommittedState","monitorReducer","monitorState","0","liftReducerWith","initialLiftedState","_a","_b","commitExcessActions","n","excess","idsToDelete","__spread","commitChanges","create","Infinity","concat","actionId_1","actionIds","Math","min","lastState","cmp","StoreDevtools","reducers$","extension","scannedActions","initialState","liftedInitialState","liftReducer","liftedAction$","merge","asObservable","observeOn","queueScheduler","liftedReducer$","liftedStateSubject","ReplaySubject","liftedStateSubscription","withLatestFrom","scan","_c","__read","reducedLiftedState","extensionStartSubscription","refresh","liftedState$","state$","stateSubscription","complete","performAction","reset","rollback","commit","sweep","toggleAction","jumpToAction","jumpToState","importState","lockChanges","pauseRecording","INITIAL_STATE","ReducerObservable","ScannedActionsSubject","ErrorHandler","IS_EXTENSION_OR_MONITOR_PRESENT","createIsExtensionOrMonitorPresent","Boolean","createReduxDevtoolsExtension","window","createStateObservable","devtools","StoreDevtoolsModule","StoreDevtoolsModule_1","instrument","ngModule","providers","provide","useValue","deps","useFactory","StateObservable","ReducerManagerDispatcher","useExisting","NgModule","ɵngrx_modules_store_devtools_store_devtools_a","ɵngrx_modules_store_devtools_store_devtools_b","ɵngrx_modules_store_devtools_store_devtools_c","ɵngrx_modules_store_devtools_store_devtools_d","ɵngrx_modules_store_devtools_store_devtools_e","ɵngrx_modules_store_devtools_store_devtools_f","ɵngrx_modules_store_devtools_store_devtools_g","ɵngrx_modules_store_devtools_store_devtools_h","ɵngrx_modules_store_devtools_store_devtools_i","ɵngrx_modules_store_devtools_store_devtools_j","defineProperty","value"],"mappings":"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","sourcesContent":["/**\n * @license NgRx 9.1.0\n * (c) 2015-2018 Brandon Roberts, Mike Ryan, Rob Wormald, Victor Savkin\n * License: MIT\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('tslib'), require('@angular/core'), require('@ngrx/store'), require('rxjs'), require('rxjs/operators')) :\n typeof define === 'function' && define.amd ? define('@ngrx/store-devtools', ['exports', 'tslib', '@angular/core', '@ngrx/store', 'rxjs', 'rxjs/operators'], factory) :\n (global = global || self, factory((global.ngrx = global.ngrx || {}, global.ngrx.storeDevtools = {}), global.tslib, global.ng.core, global.ngrx.store, global.rxjs, global.rxjs.operators));\n}(this, (function (exports, tslib, core, store, rxjs, operators) { 'use strict';\n\n var StoreDevtoolsConfig = /** @class */ (function () {\n function StoreDevtoolsConfig() {\n this.maxAge = false;\n }\n return StoreDevtoolsConfig;\n }());\n var STORE_DEVTOOLS_CONFIG = new core.InjectionToken('@ngrx/devtools Options');\n var INITIAL_OPTIONS = new core.InjectionToken('@ngrx/devtools Initial Config');\n function noMonitor() {\n return null;\n }\n var DEFAULT_NAME = 'NgRx Store DevTools';\n 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 // Add all features explicitly. This prevent buggy behavior for\n // options like \"lock\" which might otherwise not show up.\n features: {\n pause: true,\n lock: true,\n persist: true,\n export: true,\n import: 'custom',\n jump: true,\n skip: true,\n reorder: true,\n dispatch: true,\n test: true,\n },\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 || DEFAULT_OPTIONS.features;\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 }\n\n var PERFORM_ACTION = 'PERFORM_ACTION';\n var REFRESH = 'REFRESH';\n var RESET = 'RESET';\n var ROLLBACK = 'ROLLBACK';\n var COMMIT = 'COMMIT';\n var SWEEP = 'SWEEP';\n var TOGGLE_ACTION = 'TOGGLE_ACTION';\n var SET_ACTIONS_ACTIVE = 'SET_ACTIONS_ACTIVE';\n var JUMP_TO_STATE = 'JUMP_TO_STATE';\n var JUMP_TO_ACTION = 'JUMP_TO_ACTION';\n var IMPORT_STATE = 'IMPORT_STATE';\n var LOCK_CHANGES = 'LOCK_CHANGES';\n var PAUSE_RECORDING = 'PAUSE_RECORDING';\n var 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 }());\n var Refresh = /** @class */ (function () {\n function Refresh() {\n this.type = REFRESH;\n }\n return Refresh;\n }());\n var Reset = /** @class */ (function () {\n function Reset(timestamp) {\n this.timestamp = timestamp;\n this.type = RESET;\n }\n return Reset;\n }());\n var Rollback = /** @class */ (function () {\n function Rollback(timestamp) {\n this.timestamp = timestamp;\n this.type = ROLLBACK;\n }\n return Rollback;\n }());\n var Commit = /** @class */ (function () {\n function Commit(timestamp) {\n this.timestamp = timestamp;\n this.type = COMMIT;\n }\n return Commit;\n }());\n var Sweep = /** @class */ (function () {\n function Sweep() {\n this.type = SWEEP;\n }\n return Sweep;\n }());\n var ToggleAction = /** @class */ (function () {\n function ToggleAction(id) {\n this.id = id;\n this.type = TOGGLE_ACTION;\n }\n return ToggleAction;\n }());\n var 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 }());\n var JumpToState = /** @class */ (function () {\n function JumpToState(index) {\n this.index = index;\n this.type = JUMP_TO_STATE;\n }\n return JumpToState;\n }());\n var JumpToAction = /** @class */ (function () {\n function JumpToAction(actionId) {\n this.actionId = actionId;\n this.type = JUMP_TO_ACTION;\n }\n return JumpToAction;\n }());\n var ImportState = /** @class */ (function () {\n function ImportState(nextLiftedState) {\n this.nextLiftedState = nextLiftedState;\n this.type = IMPORT_STATE;\n }\n return ImportState;\n }());\n var LockChanges = /** @class */ (function () {\n function LockChanges(status) {\n this.status = status;\n this.type = LOCK_CHANGES;\n }\n return LockChanges;\n }());\n var PauseRecording = /** @class */ (function () {\n function PauseRecording(status) {\n this.status = status;\n this.type = PAUSE_RECORDING;\n }\n return PauseRecording;\n }());\n\n var DevtoolsDispatcher = /** @class */ (function (_super) {\n tslib.__extends(DevtoolsDispatcher, _super);\n function DevtoolsDispatcher() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n DevtoolsDispatcher = tslib.__decorate([\n core.Injectable()\n ], DevtoolsDispatcher);\n return DevtoolsDispatcher;\n }(store.ActionsSubject));\n\n 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 */\n function unliftState(liftedState) {\n var computedStates = liftedState.computedStates, currentStateIndex = liftedState.currentStateIndex;\n // At start up NgRx dispatches init actions,\n // When these init actions are being filtered out by the predicate or safe/block list options\n // we don't have a complete computed states yet.\n // At this point it could happen that we're out of bounds, when this happens we fall back to the last known state\n if (currentStateIndex >= computedStates.length) {\n var state_1 = computedStates[computedStates.length - 1].state;\n return state_1;\n }\n var state = computedStates[currentStateIndex].state;\n return state;\n }\n 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 */\n function liftAction(action) {\n return new PerformAction(action, +Date.now());\n }\n /**\n * Sanitizes given actions with given function.\n */\n 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 */\n function sanitizeAction(actionSanitizer, action, actionIdx) {\n return tslib.__assign(tslib.__assign({}, action), { action: actionSanitizer(action.action, actionIdx) });\n }\n /**\n * Sanitizes given states with given function.\n */\n function sanitizeStates(stateSanitizer, states) {\n return states.map(function (computedState, idx) { return ({\n state: sanitizeState(stateSanitizer, computedState.state, idx),\n error: computedState.error,\n }); });\n }\n /**\n * Sanitizes given state with given function.\n */\n function sanitizeState(stateSanitizer, state, stateIdx) {\n return stateSanitizer(state, stateIdx);\n }\n /**\n * Read the config and tell if actions should be filtered\n */\n function shouldFilterActions(config) {\n return config.predicate || config.actionsSafelist || config.actionsBlocklist;\n }\n /**\n * Return a full filtered lifted state\n */\n function filterLiftedState(liftedState, predicate, safelist, blocklist) {\n var filteredStagedActionIds = [];\n var filteredActionsById = {};\n var filteredComputedStates = [];\n liftedState.stagedActionIds.forEach(function (id, idx) {\n var liftedAction = liftedState.actionsById[id];\n if (!liftedAction)\n return;\n if (idx &&\n isActionFiltered(liftedState.computedStates[idx], liftedAction, predicate, safelist, blocklist)) {\n return;\n }\n filteredActionsById[id] = liftedAction;\n filteredStagedActionIds.push(id);\n filteredComputedStates.push(liftedState.computedStates[idx]);\n });\n return tslib.__assign(tslib.__assign({}, liftedState), { stagedActionIds: filteredStagedActionIds, actionsById: filteredActionsById, computedStates: filteredComputedStates });\n }\n /**\n * Return true is the action should be ignored\n */\n function isActionFiltered(state, action, predicate, safelist, blockedlist) {\n var predicateMatch = predicate && !predicate(state, action.action);\n var safelistMatch = safelist &&\n !action.action.type.match(safelist.map(function (s) { return escapeRegExp(s); }).join('|'));\n var blocklistMatch = blockedlist &&\n action.action.type.match(blockedlist.map(function (s) { return escapeRegExp(s); }).join('|'));\n return predicateMatch || safelistMatch || blocklistMatch;\n }\n /**\n * Return string with escaped RegExp special characters\n * https://stackoverflow.com/a/6969486/1337347\n */\n function escapeRegExp(s) {\n return s.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n }\n\n var ExtensionActionTypes = {\n START: 'START',\n DISPATCH: 'DISPATCH',\n STOP: 'STOP',\n ACTION: 'ACTION',\n };\n var REDUX_DEVTOOLS_EXTENSION = new core.InjectionToken('Redux Devtools Extension');\n var DevtoolsExtension = /** @class */ (function () {\n function DevtoolsExtension(devtoolsExtension, config, dispatcher) {\n this.config = config;\n this.dispatcher = dispatcher;\n this.devtoolsExtension = devtoolsExtension;\n this.createActionStreams();\n }\n DevtoolsExtension.prototype.notify = function (action, state) {\n var _this = this;\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 var currentState = unliftState(state);\n if (shouldFilterActions(this.config) &&\n isActionFiltered(currentState, action, this.config.predicate, this.config.actionsSafelist, this.config.actionsBlocklist)) {\n return;\n }\n var sanitizedState_1 = this.config.stateSanitizer\n ? sanitizeState(this.config.stateSanitizer, currentState, state.currentStateIndex)\n : currentState;\n var sanitizedAction_1 = this.config.actionSanitizer\n ? sanitizeAction(this.config.actionSanitizer, action, state.nextActionId)\n : action;\n this.sendToReduxDevtools(function () {\n return _this.extensionConnection.send(sanitizedAction_1, sanitizedState_1);\n });\n }\n else {\n // Requires full state update\n var sanitizedLiftedState_1 = tslib.__assign(tslib.__assign({}, state), { stagedActionIds: state.stagedActionIds, 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.sendToReduxDevtools(function () {\n return _this.devtoolsExtension.send(null, sanitizedLiftedState_1, _this.getExtensionConfig(_this.config));\n });\n }\n };\n DevtoolsExtension.prototype.createChangesObservable = function () {\n var _this = this;\n if (!this.devtoolsExtension) {\n return rxjs.empty();\n }\n return new rxjs.Observable(function (subscriber) {\n var connection = _this.devtoolsExtension.connect(_this.getExtensionConfig(_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\n var changes$ = this.createChangesObservable().pipe(operators.share());\n // Listen for the start action\n var start$ = changes$.pipe(operators.filter(function (change) { return change.type === ExtensionActionTypes.START; }));\n // Listen for the stop action\n var stop$ = changes$.pipe(operators.filter(function (change) { return change.type === ExtensionActionTypes.STOP; }));\n // Listen for lifted actions\n var liftedActions$ = changes$.pipe(operators.filter(function (change) { return change.type === ExtensionActionTypes.DISPATCH; }), operators.map(function (change) { return _this.unwrapAction(change.payload); }), operators.concatMap(function (action) {\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(operators.filter(function (action) { return action.type === store.UPDATE; }), operators.timeout(1000), operators.debounceTime(1000), operators.map(function () { return action; }), operators.catchError(function () { return rxjs.of(action); }), operators.take(1));\n }\n else {\n return rxjs.of(action);\n }\n }));\n // Listen for unlifted actions\n var actions$ = changes$.pipe(operators.filter(function (change) { return change.type === ExtensionActionTypes.ACTION; }), operators.map(function (change) { return _this.unwrapAction(change.payload); }));\n var actionsUntilStop$ = actions$.pipe(operators.takeUntil(stop$));\n var liftedUntilStop$ = liftedActions$.pipe(operators.takeUntil(stop$));\n this.start$ = start$.pipe(operators.takeUntil(stop$));\n // Only take the action sources between the start/stop events\n this.actions$ = this.start$.pipe(operators.switchMap(function () { return actionsUntilStop$; }));\n this.liftedActions$ = this.start$.pipe(operators.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 (config) {\n var extensionOptions = {\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.prototype.sendToReduxDevtools = function (send) {\n try {\n send();\n }\n catch (err) {\n console.warn('@ngrx/store-devtools: something went wrong inside the redux devtools', err);\n }\n };\n DevtoolsExtension = tslib.__decorate([\n core.Injectable(),\n tslib.__param(0, core.Inject(REDUX_DEVTOOLS_EXTENSION)),\n tslib.__param(1, core.Inject(STORE_DEVTOOLS_CONFIG)),\n tslib.__metadata(\"design:paramtypes\", [Object, StoreDevtoolsConfig,\n DevtoolsDispatcher])\n ], DevtoolsExtension);\n return DevtoolsExtension;\n }());\n\n var INIT_ACTION = { type: store.INIT };\n var RECOMPUTE = '@ngrx/store-devtools/recompute';\n var RECOMPUTE_ACTION = { type: RECOMPUTE };\n /**\n * Computes the next entry in the log by applying an action.\n */\n function 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 */\n function recomputeStates(computedStates, minInvalidatedStateIndex, reducer, committedState, actionsById, stagedActionIds, skippedActionIds, errorHandler, isPaused) {\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 // If the recording is paused, recompute all states up until the pause state,\n // else recompute all states.\n var lastIncludedActionId = stagedActionIds.length - (isPaused ? 1 : 0);\n for (var i = minInvalidatedStateIndex; i < lastIncludedActionId; 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 // 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 return nextComputedStates;\n }\n 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 isLocked: false,\n isPaused: false,\n };\n }\n /**\n * Creates a history state reducer from an app's reducer.\n */\n 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) { return function (liftedState, liftedAction) {\n var _a;\n var _b = liftedState || initialLiftedState, monitorState = _b.monitorState, actionsById = _b.actionsById, nextActionId = _b.nextActionId, stagedActionIds = _b.stagedActionIds, skippedActionIds = _b.skippedActionIds, committedState = _b.committedState, currentStateIndex = _b.currentStateIndex, computedStates = _b.computedStates, isLocked = _b.isLocked, isPaused = _b.isPaused;\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 = tslib.__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 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 // 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 LOCK_CHANGES: {\n isLocked = liftedAction.status;\n minInvalidatedStateIndex = Infinity;\n break;\n }\n case 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 = tslib.__spread(stagedActionIds, [nextActionId]);\n actionsById[nextActionId] = new PerformAction({\n type: '@ngrx/devtools/pause',\n }, +Date.now());\n nextActionId++;\n minInvalidatedStateIndex = stagedActionIds.length - 1;\n computedStates = computedStates.concat(computedStates[computedStates.length - 1]);\n if (currentStateIndex === stagedActionIds.length - 2) {\n currentStateIndex++;\n }\n minInvalidatedStateIndex = Infinity;\n }\n else {\n commitChanges();\n }\n break;\n }\n case 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 COMMIT: {\n commitChanges();\n break;\n }\n case 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 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 = tslib.__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 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 = tslib.__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 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 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 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 PERFORM_ACTION: {\n // Ignore action and return state as is if recording is locked\n if (isLocked) {\n return liftedState || initialLiftedState;\n }\n if (isPaused ||\n (liftedState &&\n isActionFiltered(liftedState.computedStates[currentStateIndex], liftedAction, options.predicate, options.actionsSafelist, options.actionsBlocklist))) {\n // If recording is paused or if the action should be ignored, 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 var lastState = computedStates[computedStates.length - 1];\n computedStates = tslib.__spread(computedStates.slice(0, -1), [\n computeNextEntry(reducer, liftedAction.action, lastState.state, lastState.error, errorHandler),\n ]);\n minInvalidatedStateIndex = Infinity;\n break;\n }\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 = tslib.__spread(stagedActionIds, [actionId]);\n // Optimization: we know that only the new action needs computing.\n minInvalidatedStateIndex = stagedActionIds.length - 1;\n break;\n }\n case IMPORT_STATE: {\n // Completely replace everything.\n (_a = liftedAction.nextLiftedState, monitorState = _a.monitorState, actionsById = _a.actionsById, nextActionId = _a.nextActionId, stagedActionIds = _a.stagedActionIds, skippedActionIds = _a.skippedActionIds, committedState = _a.committedState, currentStateIndex = _a.currentStateIndex, computedStates = _a.computedStates, isLocked = _a.isLocked, \n // prettier-ignore\n isPaused = _a.isPaused);\n break;\n }\n case store.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, isPaused);\n commitExcessActions(stagedActionIds.length - options.maxAge);\n // Avoid double computation.\n minInvalidatedStateIndex = Infinity;\n }\n break;\n }\n case store.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, isPaused);\n commitExcessActions(stagedActionIds.length - options.maxAge);\n // Avoid double computation.\n minInvalidatedStateIndex = Infinity;\n }\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 // Add a new action to only recompute state\n var actionId = nextActionId++;\n actionsById[actionId] = new PerformAction(liftedAction, +Date.now());\n stagedActionIds = tslib.__spread(stagedActionIds, [actionId]);\n minInvalidatedStateIndex = stagedActionIds.length - 1;\n computedStates = recomputeStates(computedStates, minInvalidatedStateIndex, reducer, committedState, actionsById, stagedActionIds, skippedActionIds, errorHandler, isPaused);\n }\n // Recompute state history with latest reducer and update action\n computedStates = computedStates.map(function (cmp) { return (tslib.__assign(tslib.__assign({}, cmp), { state: reducer(cmp.state, RECOMPUTE_ACTION) })); });\n currentStateIndex = stagedActionIds.length - 1;\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, isPaused);\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 isLocked: isLocked,\n isPaused: isPaused,\n };\n }; };\n }\n\n var 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$ = rxjs.merge(rxjs.merge(actions$.asObservable().pipe(operators.skip(1)), extension.actions$).pipe(operators.map(liftAction)), dispatcher, extension.liftedActions$).pipe(operators.observeOn(rxjs.queueScheduler));\n var liftedReducer$ = reducers$.pipe(operators.map(liftReducer));\n var liftedStateSubject = new rxjs.ReplaySubject(1);\n var liftedStateSubscription = liftedAction$\n .pipe(operators.withLatestFrom(liftedReducer$), operators.scan(function (_a, _b) {\n var liftedState = _a.state;\n var _c = tslib.__read(_b, 2), action = _c[0], reducer = _c[1];\n var reducedLiftedState = reducer(liftedState, action);\n // On full state update\n // If we have actions filters, we must filter completely our lifted state to be sync with the extension\n if (action.type !== PERFORM_ACTION && shouldFilterActions(config)) {\n reducedLiftedState = filterLiftedState(reducedLiftedState, config.predicate, config.actionsSafelist, config.actionsBlocklist);\n }\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 === 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(operators.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 PerformAction(action, +Date.now()));\n };\n StoreDevtools.prototype.refresh = function () {\n this.dispatch(new Refresh());\n };\n StoreDevtools.prototype.reset = function () {\n this.dispatch(new Reset(+Date.now()));\n };\n StoreDevtools.prototype.rollback = function () {\n this.dispatch(new Rollback(+Date.now()));\n };\n StoreDevtools.prototype.commit = function () {\n this.dispatch(new Commit(+Date.now()));\n };\n StoreDevtools.prototype.sweep = function () {\n this.dispatch(new Sweep());\n };\n StoreDevtools.prototype.toggleAction = function (id) {\n this.dispatch(new ToggleAction(id));\n };\n StoreDevtools.prototype.jumpToAction = function (actionId) {\n this.dispatch(new JumpToAction(actionId));\n };\n StoreDevtools.prototype.jumpToState = function (index) {\n this.dispatch(new JumpToState(index));\n };\n StoreDevtools.prototype.importState = function (nextLiftedState) {\n this.dispatch(new ImportState(nextLiftedState));\n };\n StoreDevtools.prototype.lockChanges = function (status) {\n this.dispatch(new LockChanges(status));\n };\n StoreDevtools.prototype.pauseRecording = function (status) {\n this.dispatch(new PauseRecording(status));\n };\n StoreDevtools = tslib.__decorate([\n core.Injectable(),\n tslib.__param(6, core.Inject(store.INITIAL_STATE)),\n tslib.__param(7, core.Inject(STORE_DEVTOOLS_CONFIG)),\n tslib.__metadata(\"design:paramtypes\", [DevtoolsDispatcher,\n store.ActionsSubject,\n store.ReducerObservable,\n DevtoolsExtension,\n store.ScannedActionsSubject,\n core.ErrorHandler, Object, StoreDevtoolsConfig])\n ], StoreDevtools);\n return StoreDevtools;\n }());\n\n var IS_EXTENSION_OR_MONITOR_PRESENT = new core.InjectionToken('Is Devtools Extension or Monitor Present');\n function createIsExtensionOrMonitorPresent(extension, config) {\n return Boolean(extension) || config.monitor !== noMonitor;\n }\n 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 }\n function createStateObservable(devtools) {\n return devtools.state;\n }\n var StoreDevtoolsModule = /** @class */ (function () {\n function StoreDevtoolsModule() {\n }\n StoreDevtoolsModule_1 = StoreDevtoolsModule;\n StoreDevtoolsModule.instrument = function (options) {\n if (options === void 0) { options = {}; }\n return {\n ngModule: StoreDevtoolsModule_1,\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: store.StateObservable,\n deps: [StoreDevtools],\n useFactory: createStateObservable,\n },\n {\n provide: store.ReducerManagerDispatcher,\n useExisting: DevtoolsDispatcher,\n },\n ],\n };\n };\n var StoreDevtoolsModule_1;\n StoreDevtoolsModule = StoreDevtoolsModule_1 = tslib.__decorate([\n core.NgModule({})\n ], StoreDevtoolsModule);\n return StoreDevtoolsModule;\n }());\n\n /**\n * DO NOT EDIT\n *\n * This file is automatically generated at build\n */\n\n /**\n * Generated bundle index. Do not edit.\n */\n\n exports.INITIAL_OPTIONS = INITIAL_OPTIONS;\n exports.RECOMPUTE = RECOMPUTE;\n exports.StoreDevtools = StoreDevtools;\n exports.StoreDevtoolsConfig = StoreDevtoolsConfig;\n exports.StoreDevtoolsModule = StoreDevtoolsModule;\n exports.ɵngrx_modules_store_devtools_store_devtools_a = IS_EXTENSION_OR_MONITOR_PRESENT;\n exports.ɵngrx_modules_store_devtools_store_devtools_b = createIsExtensionOrMonitorPresent;\n exports.ɵngrx_modules_store_devtools_store_devtools_c = createReduxDevtoolsExtension;\n exports.ɵngrx_modules_store_devtools_store_devtools_d = createStateObservable;\n exports.ɵngrx_modules_store_devtools_store_devtools_e = STORE_DEVTOOLS_CONFIG;\n exports.ɵngrx_modules_store_devtools_store_devtools_f = noMonitor;\n exports.ɵngrx_modules_store_devtools_store_devtools_g = createConfig;\n exports.ɵngrx_modules_store_devtools_store_devtools_h = REDUX_DEVTOOLS_EXTENSION;\n exports.ɵngrx_modules_store_devtools_store_devtools_i = DevtoolsExtension;\n exports.ɵngrx_modules_store_devtools_store_devtools_j = DevtoolsDispatcher;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n})));\n//# sourceMappingURL=store-devtools.umd.js.map\n"]}
1
+ {"version":3,"sources":["modules/store-devtools/store-devtools.umd.js"],"names":["global","factory","exports","module","require","define","amd","self","ngrx","storeDevtools","tslib","ng","core","store","rxjs","operators","this","StoreDevtoolsConfig","maxAge","STORE_DEVTOOLS_CONFIG","InjectionToken","INITIAL_OPTIONS","noMonitor","DEFAULT_NAME","createConfig","_options","DEFAULT_OPTIONS","monitor","actionSanitizer","undefined","stateSanitizer","name","serialize","logOnly","features","pause","lock","persist","export","import","jump","skip","reorder","dispatch","test","options","config","Object","assign","Error","PERFORM_ACTION","REFRESH","RESET","ROLLBACK","COMMIT","SWEEP","TOGGLE_ACTION","SET_ACTIONS_ACTIVE","JUMP_TO_STATE","JUMP_TO_ACTION","IMPORT_STATE","LOCK_CHANGES","PAUSE_RECORDING","PerformAction","action","timestamp","type","Refresh","Reset","Rollback","Commit","Sweep","ToggleAction","id","SetActionsActive","start","end","active","JumpToState","index","JumpToAction","actionId","ImportState","nextLiftedState","LockChanges","status","PauseRecording","DevtoolsDispatcher","_super","apply","arguments","__extends","__decorate","Injectable","ActionsSubject","difference","first","second","filter","item","indexOf","unliftState","liftedState","computedStates","currentStateIndex","length","state","unliftAction","actionsById","nextActionId","liftAction","Date","now","sanitizeActions","actions","keys","reduce","sanitizedActions","actionIdx","idx","Number","sanitizeAction","__assign","sanitizeStates","states","map","computedState","sanitizeState","error","stateIdx","shouldFilterActions","predicate","actionsSafelist","actionsBlocklist","filterLiftedState","safelist","blocklist","filteredStagedActionIds","filteredActionsById","filteredComputedStates","stagedActionIds","forEach","liftedAction","isActionFiltered","push","blockedlist","predicateMatch","safelistMatch","match","s","escapeRegExp","join","blocklistMatch","replace","ExtensionActionTypes","START","DISPATCH","STOP","ACTION","REDUX_DEVTOOLS_EXTENSION","DevtoolsExtension","devtoolsExtension","dispatcher","createActionStreams","prototype","notify","_this","isLocked","isPaused","currentState","sanitizedState_1","sanitizedAction_1","sendToReduxDevtools","extensionConnection","send","sanitizedLiftedState_1","getExtensionConfig","createChangesObservable","Observable","subscriber","connection","connect","init","subscribe","change","next","unsubscribe","empty","changes$","pipe","share","start$","stop$","liftedActions$","unwrapAction","payload","concatMap","UPDATE","timeout","debounceTime","catchError","of","take","actionsUntilStop$","takeUntil","liftedUntilStop$","actions$","switchMap","eval","extensionOptions","err","console","warn","__param","Inject","__metadata","INIT_ACTION","INIT","RECOMPUTE","RECOMPUTE_ACTION","computeNextEntry","reducer","errorHandler","nextError","nextState","toString","handleError","stack","recomputeStates","minInvalidatedStateIndex","committedState","skippedActionIds","nextComputedStates","slice","lastIncludedActionId","i","previousEntry","previousState","previousError","entry","liftInitialState","initialCommittedState","monitorReducer","monitorState","0","liftReducerWith","initialLiftedState","_a","_b","commitExcessActions","n","excess","idsToDelete","__spread","commitChanges","create","Infinity","concat","actionId_1","actionIds","Math","min","lastState","cmp","StoreDevtools","reducers$","extension","scannedActions","initialState","liftedInitialState","liftReducer","liftedAction$","merge","asObservable","observeOn","queueScheduler","liftedReducer$","liftedStateSubject","ReplaySubject","liftedStateSubscription","withLatestFrom","scan","_c","__read","reducedLiftedState","extensionStartSubscription","refresh","liftedState$","state$","stateSubscription","complete","performAction","reset","rollback","commit","sweep","toggleAction","jumpToAction","jumpToState","importState","lockChanges","pauseRecording","INITIAL_STATE","ReducerObservable","ScannedActionsSubject","ErrorHandler","IS_EXTENSION_OR_MONITOR_PRESENT","createIsExtensionOrMonitorPresent","Boolean","createReduxDevtoolsExtension","window","createStateObservable","devtools","StoreDevtoolsModule","StoreDevtoolsModule_1","instrument","ngModule","providers","provide","useValue","deps","useFactory","StateObservable","ReducerManagerDispatcher","useExisting","NgModule","ɵngrx_modules_store_devtools_store_devtools_a","ɵngrx_modules_store_devtools_store_devtools_b","ɵngrx_modules_store_devtools_store_devtools_c","ɵngrx_modules_store_devtools_store_devtools_d","ɵngrx_modules_store_devtools_store_devtools_e","ɵngrx_modules_store_devtools_store_devtools_f","ɵngrx_modules_store_devtools_store_devtools_g","ɵngrx_modules_store_devtools_store_devtools_h","ɵngrx_modules_store_devtools_store_devtools_i","ɵngrx_modules_store_devtools_store_devtools_j","defineProperty","value"],"mappings":"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","sourcesContent":["/**\n * @license NgRx 9.2.1\n * (c) 2015-2018 Brandon Roberts, Mike Ryan, Rob Wormald, Victor Savkin\n * License: MIT\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('tslib'), require('@angular/core'), require('@ngrx/store'), require('rxjs'), require('rxjs/operators')) :\n typeof define === 'function' && define.amd ? define('@ngrx/store-devtools', ['exports', 'tslib', '@angular/core', '@ngrx/store', 'rxjs', 'rxjs/operators'], factory) :\n (global = global || self, factory((global.ngrx = global.ngrx || {}, global.ngrx.storeDevtools = {}), global.tslib, global.ng.core, global.ngrx.store, global.rxjs, global.rxjs.operators));\n}(this, (function (exports, tslib, core, store, rxjs, operators) { 'use strict';\n\n var StoreDevtoolsConfig = /** @class */ (function () {\n function StoreDevtoolsConfig() {\n this.maxAge = false;\n }\n return StoreDevtoolsConfig;\n }());\n var STORE_DEVTOOLS_CONFIG = new core.InjectionToken('@ngrx/devtools Options');\n var INITIAL_OPTIONS = new core.InjectionToken('@ngrx/devtools Initial Config');\n function noMonitor() {\n return null;\n }\n var DEFAULT_NAME = 'NgRx Store DevTools';\n 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 // Add all features explicitly. This prevent buggy behavior for\n // options like \"lock\" which might otherwise not show up.\n features: {\n pause: true,\n lock: true,\n persist: true,\n export: true,\n import: 'custom',\n jump: true,\n skip: true,\n reorder: true,\n dispatch: true,\n test: true,\n },\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 || DEFAULT_OPTIONS.features;\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 }\n\n var PERFORM_ACTION = 'PERFORM_ACTION';\n var REFRESH = 'REFRESH';\n var RESET = 'RESET';\n var ROLLBACK = 'ROLLBACK';\n var COMMIT = 'COMMIT';\n var SWEEP = 'SWEEP';\n var TOGGLE_ACTION = 'TOGGLE_ACTION';\n var SET_ACTIONS_ACTIVE = 'SET_ACTIONS_ACTIVE';\n var JUMP_TO_STATE = 'JUMP_TO_STATE';\n var JUMP_TO_ACTION = 'JUMP_TO_ACTION';\n var IMPORT_STATE = 'IMPORT_STATE';\n var LOCK_CHANGES = 'LOCK_CHANGES';\n var PAUSE_RECORDING = 'PAUSE_RECORDING';\n var 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 }());\n var Refresh = /** @class */ (function () {\n function Refresh() {\n this.type = REFRESH;\n }\n return Refresh;\n }());\n var Reset = /** @class */ (function () {\n function Reset(timestamp) {\n this.timestamp = timestamp;\n this.type = RESET;\n }\n return Reset;\n }());\n var Rollback = /** @class */ (function () {\n function Rollback(timestamp) {\n this.timestamp = timestamp;\n this.type = ROLLBACK;\n }\n return Rollback;\n }());\n var Commit = /** @class */ (function () {\n function Commit(timestamp) {\n this.timestamp = timestamp;\n this.type = COMMIT;\n }\n return Commit;\n }());\n var Sweep = /** @class */ (function () {\n function Sweep() {\n this.type = SWEEP;\n }\n return Sweep;\n }());\n var ToggleAction = /** @class */ (function () {\n function ToggleAction(id) {\n this.id = id;\n this.type = TOGGLE_ACTION;\n }\n return ToggleAction;\n }());\n var 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 }());\n var JumpToState = /** @class */ (function () {\n function JumpToState(index) {\n this.index = index;\n this.type = JUMP_TO_STATE;\n }\n return JumpToState;\n }());\n var JumpToAction = /** @class */ (function () {\n function JumpToAction(actionId) {\n this.actionId = actionId;\n this.type = JUMP_TO_ACTION;\n }\n return JumpToAction;\n }());\n var ImportState = /** @class */ (function () {\n function ImportState(nextLiftedState) {\n this.nextLiftedState = nextLiftedState;\n this.type = IMPORT_STATE;\n }\n return ImportState;\n }());\n var LockChanges = /** @class */ (function () {\n function LockChanges(status) {\n this.status = status;\n this.type = LOCK_CHANGES;\n }\n return LockChanges;\n }());\n var PauseRecording = /** @class */ (function () {\n function PauseRecording(status) {\n this.status = status;\n this.type = PAUSE_RECORDING;\n }\n return PauseRecording;\n }());\n\n var DevtoolsDispatcher = /** @class */ (function (_super) {\n tslib.__extends(DevtoolsDispatcher, _super);\n function DevtoolsDispatcher() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n DevtoolsDispatcher = tslib.__decorate([\n core.Injectable()\n ], DevtoolsDispatcher);\n return DevtoolsDispatcher;\n }(store.ActionsSubject));\n\n 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 */\n function unliftState(liftedState) {\n var computedStates = liftedState.computedStates, currentStateIndex = liftedState.currentStateIndex;\n // At start up NgRx dispatches init actions,\n // When these init actions are being filtered out by the predicate or safe/block list options\n // we don't have a complete computed states yet.\n // At this point it could happen that we're out of bounds, when this happens we fall back to the last known state\n if (currentStateIndex >= computedStates.length) {\n var state_1 = computedStates[computedStates.length - 1].state;\n return state_1;\n }\n var state = computedStates[currentStateIndex].state;\n return state;\n }\n 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 */\n function liftAction(action) {\n return new PerformAction(action, +Date.now());\n }\n /**\n * Sanitizes given actions with given function.\n */\n 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 */\n function sanitizeAction(actionSanitizer, action, actionIdx) {\n return tslib.__assign(tslib.__assign({}, action), { action: actionSanitizer(action.action, actionIdx) });\n }\n /**\n * Sanitizes given states with given function.\n */\n function sanitizeStates(stateSanitizer, states) {\n return states.map(function (computedState, idx) { return ({\n state: sanitizeState(stateSanitizer, computedState.state, idx),\n error: computedState.error,\n }); });\n }\n /**\n * Sanitizes given state with given function.\n */\n function sanitizeState(stateSanitizer, state, stateIdx) {\n return stateSanitizer(state, stateIdx);\n }\n /**\n * Read the config and tell if actions should be filtered\n */\n function shouldFilterActions(config) {\n return config.predicate || config.actionsSafelist || config.actionsBlocklist;\n }\n /**\n * Return a full filtered lifted state\n */\n function filterLiftedState(liftedState, predicate, safelist, blocklist) {\n var filteredStagedActionIds = [];\n var filteredActionsById = {};\n var filteredComputedStates = [];\n liftedState.stagedActionIds.forEach(function (id, idx) {\n var liftedAction = liftedState.actionsById[id];\n if (!liftedAction)\n return;\n if (idx &&\n isActionFiltered(liftedState.computedStates[idx], liftedAction, predicate, safelist, blocklist)) {\n return;\n }\n filteredActionsById[id] = liftedAction;\n filteredStagedActionIds.push(id);\n filteredComputedStates.push(liftedState.computedStates[idx]);\n });\n return tslib.__assign(tslib.__assign({}, liftedState), { stagedActionIds: filteredStagedActionIds, actionsById: filteredActionsById, computedStates: filteredComputedStates });\n }\n /**\n * Return true is the action should be ignored\n */\n function isActionFiltered(state, action, predicate, safelist, blockedlist) {\n var predicateMatch = predicate && !predicate(state, action.action);\n var safelistMatch = safelist &&\n !action.action.type.match(safelist.map(function (s) { return escapeRegExp(s); }).join('|'));\n var blocklistMatch = blockedlist &&\n action.action.type.match(blockedlist.map(function (s) { return escapeRegExp(s); }).join('|'));\n return predicateMatch || safelistMatch || blocklistMatch;\n }\n /**\n * Return string with escaped RegExp special characters\n * https://stackoverflow.com/a/6969486/1337347\n */\n function escapeRegExp(s) {\n return s.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n }\n\n var ExtensionActionTypes = {\n START: 'START',\n DISPATCH: 'DISPATCH',\n STOP: 'STOP',\n ACTION: 'ACTION',\n };\n var REDUX_DEVTOOLS_EXTENSION = new core.InjectionToken('Redux Devtools Extension');\n var DevtoolsExtension = /** @class */ (function () {\n function DevtoolsExtension(devtoolsExtension, config, dispatcher) {\n this.config = config;\n this.dispatcher = dispatcher;\n this.devtoolsExtension = devtoolsExtension;\n this.createActionStreams();\n }\n DevtoolsExtension.prototype.notify = function (action, state) {\n var _this = this;\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 var currentState = unliftState(state);\n if (shouldFilterActions(this.config) &&\n isActionFiltered(currentState, action, this.config.predicate, this.config.actionsSafelist, this.config.actionsBlocklist)) {\n return;\n }\n var sanitizedState_1 = this.config.stateSanitizer\n ? sanitizeState(this.config.stateSanitizer, currentState, state.currentStateIndex)\n : currentState;\n var sanitizedAction_1 = this.config.actionSanitizer\n ? sanitizeAction(this.config.actionSanitizer, action, state.nextActionId)\n : action;\n this.sendToReduxDevtools(function () {\n return _this.extensionConnection.send(sanitizedAction_1, sanitizedState_1);\n });\n }\n else {\n // Requires full state update\n var sanitizedLiftedState_1 = tslib.__assign(tslib.__assign({}, state), { stagedActionIds: state.stagedActionIds, 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.sendToReduxDevtools(function () {\n return _this.devtoolsExtension.send(null, sanitizedLiftedState_1, _this.getExtensionConfig(_this.config));\n });\n }\n };\n DevtoolsExtension.prototype.createChangesObservable = function () {\n var _this = this;\n if (!this.devtoolsExtension) {\n return rxjs.empty();\n }\n return new rxjs.Observable(function (subscriber) {\n var connection = _this.devtoolsExtension.connect(_this.getExtensionConfig(_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\n var changes$ = this.createChangesObservable().pipe(operators.share());\n // Listen for the start action\n var start$ = changes$.pipe(operators.filter(function (change) { return change.type === ExtensionActionTypes.START; }));\n // Listen for the stop action\n var stop$ = changes$.pipe(operators.filter(function (change) { return change.type === ExtensionActionTypes.STOP; }));\n // Listen for lifted actions\n var liftedActions$ = changes$.pipe(operators.filter(function (change) { return change.type === ExtensionActionTypes.DISPATCH; }), operators.map(function (change) { return _this.unwrapAction(change.payload); }), operators.concatMap(function (action) {\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(operators.filter(function (action) { return action.type === store.UPDATE; }), operators.timeout(1000), operators.debounceTime(1000), operators.map(function () { return action; }), operators.catchError(function () { return rxjs.of(action); }), operators.take(1));\n }\n else {\n return rxjs.of(action);\n }\n }));\n // Listen for unlifted actions\n var actions$ = changes$.pipe(operators.filter(function (change) { return change.type === ExtensionActionTypes.ACTION; }), operators.map(function (change) { return _this.unwrapAction(change.payload); }));\n var actionsUntilStop$ = actions$.pipe(operators.takeUntil(stop$));\n var liftedUntilStop$ = liftedActions$.pipe(operators.takeUntil(stop$));\n this.start$ = start$.pipe(operators.takeUntil(stop$));\n // Only take the action sources between the start/stop events\n this.actions$ = this.start$.pipe(operators.switchMap(function () { return actionsUntilStop$; }));\n this.liftedActions$ = this.start$.pipe(operators.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 (config) {\n var extensionOptions = {\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.prototype.sendToReduxDevtools = function (send) {\n try {\n send();\n }\n catch (err) {\n console.warn('@ngrx/store-devtools: something went wrong inside the redux devtools', err);\n }\n };\n DevtoolsExtension = tslib.__decorate([\n core.Injectable(),\n tslib.__param(0, core.Inject(REDUX_DEVTOOLS_EXTENSION)),\n tslib.__param(1, core.Inject(STORE_DEVTOOLS_CONFIG)),\n tslib.__metadata(\"design:paramtypes\", [Object, StoreDevtoolsConfig,\n DevtoolsDispatcher])\n ], DevtoolsExtension);\n return DevtoolsExtension;\n }());\n\n var INIT_ACTION = { type: store.INIT };\n var RECOMPUTE = '@ngrx/store-devtools/recompute';\n var RECOMPUTE_ACTION = { type: RECOMPUTE };\n /**\n * Computes the next entry in the log by applying an action.\n */\n function 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 */\n function recomputeStates(computedStates, minInvalidatedStateIndex, reducer, committedState, actionsById, stagedActionIds, skippedActionIds, errorHandler, isPaused) {\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 // If the recording is paused, recompute all states up until the pause state,\n // else recompute all states.\n var lastIncludedActionId = stagedActionIds.length - (isPaused ? 1 : 0);\n for (var i = minInvalidatedStateIndex; i < lastIncludedActionId; 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 // 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 return nextComputedStates;\n }\n 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 isLocked: false,\n isPaused: false,\n };\n }\n /**\n * Creates a history state reducer from an app's reducer.\n */\n 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) { return function (liftedState, liftedAction) {\n var _a;\n var _b = liftedState || initialLiftedState, monitorState = _b.monitorState, actionsById = _b.actionsById, nextActionId = _b.nextActionId, stagedActionIds = _b.stagedActionIds, skippedActionIds = _b.skippedActionIds, committedState = _b.committedState, currentStateIndex = _b.currentStateIndex, computedStates = _b.computedStates, isLocked = _b.isLocked, isPaused = _b.isPaused;\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 = tslib.__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 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 // 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 LOCK_CHANGES: {\n isLocked = liftedAction.status;\n minInvalidatedStateIndex = Infinity;\n break;\n }\n case 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 = tslib.__spread(stagedActionIds, [nextActionId]);\n actionsById[nextActionId] = new PerformAction({\n type: '@ngrx/devtools/pause',\n }, +Date.now());\n nextActionId++;\n minInvalidatedStateIndex = stagedActionIds.length - 1;\n computedStates = computedStates.concat(computedStates[computedStates.length - 1]);\n if (currentStateIndex === stagedActionIds.length - 2) {\n currentStateIndex++;\n }\n minInvalidatedStateIndex = Infinity;\n }\n else {\n commitChanges();\n }\n break;\n }\n case 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 COMMIT: {\n commitChanges();\n break;\n }\n case 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 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 = tslib.__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 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 = tslib.__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 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 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 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 PERFORM_ACTION: {\n // Ignore action and return state as is if recording is locked\n if (isLocked) {\n return liftedState || initialLiftedState;\n }\n if (isPaused ||\n (liftedState &&\n isActionFiltered(liftedState.computedStates[currentStateIndex], liftedAction, options.predicate, options.actionsSafelist, options.actionsBlocklist))) {\n // If recording is paused or if the action should be ignored, 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 var lastState = computedStates[computedStates.length - 1];\n computedStates = tslib.__spread(computedStates.slice(0, -1), [\n computeNextEntry(reducer, liftedAction.action, lastState.state, lastState.error, errorHandler),\n ]);\n minInvalidatedStateIndex = Infinity;\n break;\n }\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 = tslib.__spread(stagedActionIds, [actionId]);\n // Optimization: we know that only the new action needs computing.\n minInvalidatedStateIndex = stagedActionIds.length - 1;\n break;\n }\n case IMPORT_STATE: {\n // Completely replace everything.\n (_a = liftedAction.nextLiftedState, monitorState = _a.monitorState, actionsById = _a.actionsById, nextActionId = _a.nextActionId, stagedActionIds = _a.stagedActionIds, skippedActionIds = _a.skippedActionIds, committedState = _a.committedState, currentStateIndex = _a.currentStateIndex, computedStates = _a.computedStates, isLocked = _a.isLocked, \n // prettier-ignore\n isPaused = _a.isPaused);\n break;\n }\n case store.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, isPaused);\n commitExcessActions(stagedActionIds.length - options.maxAge);\n // Avoid double computation.\n minInvalidatedStateIndex = Infinity;\n }\n break;\n }\n case store.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, isPaused);\n commitExcessActions(stagedActionIds.length - options.maxAge);\n // Avoid double computation.\n minInvalidatedStateIndex = Infinity;\n }\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 // Add a new action to only recompute state\n var actionId = nextActionId++;\n actionsById[actionId] = new PerformAction(liftedAction, +Date.now());\n stagedActionIds = tslib.__spread(stagedActionIds, [actionId]);\n minInvalidatedStateIndex = stagedActionIds.length - 1;\n computedStates = recomputeStates(computedStates, minInvalidatedStateIndex, reducer, committedState, actionsById, stagedActionIds, skippedActionIds, errorHandler, isPaused);\n }\n // Recompute state history with latest reducer and update action\n computedStates = computedStates.map(function (cmp) { return (tslib.__assign(tslib.__assign({}, cmp), { state: reducer(cmp.state, RECOMPUTE_ACTION) })); });\n currentStateIndex = stagedActionIds.length - 1;\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, isPaused);\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 isLocked: isLocked,\n isPaused: isPaused,\n };\n }; };\n }\n\n var 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$ = rxjs.merge(rxjs.merge(actions$.asObservable().pipe(operators.skip(1)), extension.actions$).pipe(operators.map(liftAction)), dispatcher, extension.liftedActions$).pipe(operators.observeOn(rxjs.queueScheduler));\n var liftedReducer$ = reducers$.pipe(operators.map(liftReducer));\n var liftedStateSubject = new rxjs.ReplaySubject(1);\n var liftedStateSubscription = liftedAction$\n .pipe(operators.withLatestFrom(liftedReducer$), operators.scan(function (_a, _b) {\n var liftedState = _a.state;\n var _c = tslib.__read(_b, 2), action = _c[0], reducer = _c[1];\n var reducedLiftedState = reducer(liftedState, action);\n // On full state update\n // If we have actions filters, we must filter completely our lifted state to be sync with the extension\n if (action.type !== PERFORM_ACTION && shouldFilterActions(config)) {\n reducedLiftedState = filterLiftedState(reducedLiftedState, config.predicate, config.actionsSafelist, config.actionsBlocklist);\n }\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 === 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(operators.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 PerformAction(action, +Date.now()));\n };\n StoreDevtools.prototype.refresh = function () {\n this.dispatch(new Refresh());\n };\n StoreDevtools.prototype.reset = function () {\n this.dispatch(new Reset(+Date.now()));\n };\n StoreDevtools.prototype.rollback = function () {\n this.dispatch(new Rollback(+Date.now()));\n };\n StoreDevtools.prototype.commit = function () {\n this.dispatch(new Commit(+Date.now()));\n };\n StoreDevtools.prototype.sweep = function () {\n this.dispatch(new Sweep());\n };\n StoreDevtools.prototype.toggleAction = function (id) {\n this.dispatch(new ToggleAction(id));\n };\n StoreDevtools.prototype.jumpToAction = function (actionId) {\n this.dispatch(new JumpToAction(actionId));\n };\n StoreDevtools.prototype.jumpToState = function (index) {\n this.dispatch(new JumpToState(index));\n };\n StoreDevtools.prototype.importState = function (nextLiftedState) {\n this.dispatch(new ImportState(nextLiftedState));\n };\n StoreDevtools.prototype.lockChanges = function (status) {\n this.dispatch(new LockChanges(status));\n };\n StoreDevtools.prototype.pauseRecording = function (status) {\n this.dispatch(new PauseRecording(status));\n };\n StoreDevtools = tslib.__decorate([\n core.Injectable(),\n tslib.__param(6, core.Inject(store.INITIAL_STATE)),\n tslib.__param(7, core.Inject(STORE_DEVTOOLS_CONFIG)),\n tslib.__metadata(\"design:paramtypes\", [DevtoolsDispatcher,\n store.ActionsSubject,\n store.ReducerObservable,\n DevtoolsExtension,\n store.ScannedActionsSubject,\n core.ErrorHandler, Object, StoreDevtoolsConfig])\n ], StoreDevtools);\n return StoreDevtools;\n }());\n\n var IS_EXTENSION_OR_MONITOR_PRESENT = new core.InjectionToken('Is Devtools Extension or Monitor Present');\n function createIsExtensionOrMonitorPresent(extension, config) {\n return Boolean(extension) || config.monitor !== noMonitor;\n }\n 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 }\n function createStateObservable(devtools) {\n return devtools.state;\n }\n var StoreDevtoolsModule = /** @class */ (function () {\n function StoreDevtoolsModule() {\n }\n StoreDevtoolsModule_1 = StoreDevtoolsModule;\n StoreDevtoolsModule.instrument = function (options) {\n if (options === void 0) { options = {}; }\n return {\n ngModule: StoreDevtoolsModule_1,\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: store.StateObservable,\n deps: [StoreDevtools],\n useFactory: createStateObservable,\n },\n {\n provide: store.ReducerManagerDispatcher,\n useExisting: DevtoolsDispatcher,\n },\n ],\n };\n };\n var StoreDevtoolsModule_1;\n StoreDevtoolsModule = StoreDevtoolsModule_1 = tslib.__decorate([\n core.NgModule({})\n ], StoreDevtoolsModule);\n return StoreDevtoolsModule;\n }());\n\n /**\n * DO NOT EDIT\n *\n * This file is automatically generated at build\n */\n\n /**\n * Generated bundle index. Do not edit.\n */\n\n exports.INITIAL_OPTIONS = INITIAL_OPTIONS;\n exports.RECOMPUTE = RECOMPUTE;\n exports.StoreDevtools = StoreDevtools;\n exports.StoreDevtoolsConfig = StoreDevtoolsConfig;\n exports.StoreDevtoolsModule = StoreDevtoolsModule;\n exports.ɵngrx_modules_store_devtools_store_devtools_a = IS_EXTENSION_OR_MONITOR_PRESENT;\n exports.ɵngrx_modules_store_devtools_store_devtools_b = createIsExtensionOrMonitorPresent;\n exports.ɵngrx_modules_store_devtools_store_devtools_c = createReduxDevtoolsExtension;\n exports.ɵngrx_modules_store_devtools_store_devtools_d = createStateObservable;\n exports.ɵngrx_modules_store_devtools_store_devtools_e = STORE_DEVTOOLS_CONFIG;\n exports.ɵngrx_modules_store_devtools_store_devtools_f = noMonitor;\n exports.ɵngrx_modules_store_devtools_store_devtools_g = createConfig;\n exports.ɵngrx_modules_store_devtools_store_devtools_h = REDUX_DEVTOOLS_EXTENSION;\n exports.ɵngrx_modules_store_devtools_store_devtools_i = DevtoolsExtension;\n exports.ɵngrx_modules_store_devtools_store_devtools_j = DevtoolsDispatcher;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n})));\n//# sourceMappingURL=store-devtools.umd.js.map\n"]}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license NgRx 9.1.0
2
+ * @license NgRx 9.2.1
3
3
  * (c) 2015-2018 Brandon Roberts, Mike Ryan, Rob Wormald, Victor Savkin
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license NgRx 9.1.0
2
+ * @license NgRx 9.2.1
3
3
  * (c) 2015-2018 Brandon Roberts, Mike Ryan, Rob Wormald, Victor Savkin
4
4
  * License: MIT
5
5
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ngrx/store-devtools",
3
- "version": "9.1.0",
3
+ "version": "9.2.1",
4
4
  "description": "Developer tools for @ngrx/store",
5
5
  "repository": {
6
6
  "type": "git",
@@ -20,7 +20,7 @@
20
20
  },
21
21
  "homepage": "https://github.com/ngrx/platform#readme",
22
22
  "peerDependencies": {
23
- "@ngrx/store": "9.1.0",
23
+ "@ngrx/store": "9.2.1",
24
24
  "rxjs": "^6.5.3"
25
25
  },
26
26
  "schematics": "./schematics/collection.json",
@@ -32,6 +32,7 @@
32
32
  "@ngrx/router-store",
33
33
  "@ngrx/data",
34
34
  "@ngrx/component",
35
+ "@ngrx/component-store",
35
36
  "@ngrx/schematics",
36
37
  "@ngrx/store-devtools"
37
38
  ],
@@ -23,4 +23,4 @@ export { updatePackage } from './utility/update';
23
23
  export { parseName } from './utility/parse-name';
24
24
  export { addPackageToPackageJson } from './utility/package';
25
25
  export { platformVersion } from './utility/libs-version';
26
- export { visitTSSourceFiles, visitNgModuleImports } from './utility/visitors';
26
+ export { visitTSSourceFiles, visitNgModuleImports, visitNgModuleExports, visitComponents, visitDecorator, visitNgModules, visitTemplates, } from './utility/visitors';
@@ -75,5 +75,10 @@
75
75
  var visitors_1 = require("@ngrx/store-devtools/schematics-core/utility/visitors");
76
76
  exports.visitTSSourceFiles = visitors_1.visitTSSourceFiles;
77
77
  exports.visitNgModuleImports = visitors_1.visitNgModuleImports;
78
+ exports.visitNgModuleExports = visitors_1.visitNgModuleExports;
79
+ exports.visitComponents = visitors_1.visitComponents;
80
+ exports.visitDecorator = visitors_1.visitDecorator;
81
+ exports.visitNgModules = visitors_1.visitNgModules;
82
+ exports.visitTemplates = visitors_1.visitTemplates;
78
83
  });
79
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9tb2R1bGVzL3N0b3JlLWRldnRvb2xzL3NjaGVtYXRpY3MtY29yZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztJQUFBLGtGQVUyQjtJQUUzQiw0RkFBdUQ7SUFBOUMsdUNBQUEsWUFBWSxDQUFBO0lBRXJCLG9GQWM2QjtJQWIzQixnQ0FBQSxTQUFTLENBQUE7SUFDVCxxQ0FBQSxjQUFjLENBQUE7SUFDZCwyQ0FBQSxvQkFBb0IsQ0FBQTtJQUNwQiw2Q0FBQSxzQkFBc0IsQ0FBQTtJQUN0QixnREFBQSx5QkFBeUIsQ0FBQTtJQUN6QixtQ0FBQSxZQUFZLENBQUE7SUFDWiwyQ0FBQSxvQkFBb0IsQ0FBQTtJQUNwQiw2Q0FBQSxzQkFBc0IsQ0FBQTtJQUN0Qix3Q0FBQSxpQkFBaUIsQ0FBQTtJQUNqQix3Q0FBQSxpQkFBaUIsQ0FBQTtJQUNqQiwwQ0FBQSxtQkFBbUIsQ0FBQTtJQUNuQixvQ0FBQSxhQUFhLENBQUE7SUFDYix1Q0FBQSxnQkFBZ0IsQ0FBQTtJQUdsQiw4RUFVMEI7SUFQeEIsOEJBQUEsVUFBVSxDQUFBO0lBQ1YsZ0NBQUEsWUFBWSxDQUFBO0lBQ1osZ0NBQUEsWUFBWSxDQUFBO0lBQ1osaUNBQUEsYUFBYSxDQUFBO0lBQ2IsdUNBQUEsbUJBQW1CLENBQUE7SUFDbkIsd0NBQUEsb0JBQW9CLENBQUE7SUFDcEIsaUNBQUEsYUFBYSxDQUFBO0lBR2YsOEVBQTZFO0lBQXpELGdDQUFBLFlBQVksQ0FBQTtJQUFFLG9DQUFBLGdCQUFnQixDQUFBO0lBRWxELHdGQUsrQjtJQUo3QixtQ0FBQSxVQUFVLENBQUE7SUFDViw4Q0FBQSxxQkFBcUIsQ0FBQTtJQUNyQiwwQ0FBQSxpQkFBaUIsQ0FBQTtJQUluQix3RkFBZ0U7SUFBdkQsZ0RBQUEsdUJBQXVCLENBQUE7SUFFaEMsc0ZBTThCO0lBTDVCLHlDQUFBLGlCQUFpQixDQUFBO0lBQ2pCLGtEQUFBLDBCQUEwQixDQUFBO0lBQzFCLGtEQUFBLDBCQUEwQixDQUFBO0lBQzFCLG9EQUFBLDRCQUE0QixDQUFBO0lBQzVCLDRCQUFBLElBQUksQ0FBQTtJQUdOLGdGQUFzRTtJQUE3RCxtQ0FBQSxjQUFjLENBQUE7SUFBRSwrQkFBQSxVQUFVLENBQUE7SUFBRSwwQkFBQSxLQUFLLENBQUE7SUFFN0IsUUFBQSxXQUFXLEdBQUc7UUFDekIsU0FBUyxFQUFULG1CQUFTO1FBQ1QsVUFBVSxFQUFWLG9CQUFVO1FBQ1YsUUFBUSxFQUFSLGtCQUFRO1FBQ1IsUUFBUSxFQUFSLGtCQUFRO1FBQ1IsVUFBVSxFQUFWLG9CQUFVO1FBQ1YsS0FBSyxFQUFMLGVBQUs7UUFDTCxVQUFVLEVBQVYsb0JBQVU7UUFDVixXQUFXLEVBQVgscUJBQVc7UUFDWCxTQUFTLEVBQVQsbUJBQVM7S0FDVixDQUFDO0lBRUYsOEVBQWlEO0lBQXhDLGlDQUFBLGFBQWEsQ0FBQTtJQUV0QixzRkFBaUQ7SUFBeEMsaUNBQUEsU0FBUyxDQUFBO0lBRWxCLGdGQUE0RDtJQUFuRCw0Q0FBQSx1QkFBdUIsQ0FBQTtJQUVoQywwRkFBeUQ7SUFBaEQseUNBQUEsZUFBZSxDQUFBO0lBRXhCLGtGQUE4RTtJQUFyRSx3Q0FBQSxrQkFBa0IsQ0FBQTtJQUFFLDBDQUFBLG9CQUFvQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgZGFzaGVyaXplLFxuICBkZWNhbWVsaXplLFxuICBjYW1lbGl6ZSxcbiAgY2xhc3NpZnksXG4gIHVuZGVyc2NvcmUsXG4gIGdyb3VwLFxuICBjYXBpdGFsaXplLFxuICBmZWF0dXJlUGF0aCxcbiAgcGx1cmFsaXplLFxufSBmcm9tICcuL3V0aWxpdHkvc3RyaW5ncyc7XG5cbmV4cG9ydCB7IGlzSXZ5RW5hYmxlZCB9IGZyb20gJy4vdXRpbGl0eS9hbmd1bGFyLXV0aWxzJztcblxuZXhwb3J0IHtcbiAgZmluZE5vZGVzLFxuICBnZXRTb3VyY2VOb2RlcyxcbiAgZ2V0RGVjb3JhdG9yTWV0YWRhdGEsXG4gIGdldENvbnRlbnRPZktleUxpdGVyYWwsXG4gIGluc2VydEFmdGVyTGFzdE9jY3VycmVuY2UsXG4gIGluc2VydEltcG9ydCxcbiAgYWRkQm9vdHN0cmFwVG9Nb2R1bGUsXG4gIGFkZERlY2xhcmF0aW9uVG9Nb2R1bGUsXG4gIGFkZEV4cG9ydFRvTW9kdWxlLFxuICBhZGRJbXBvcnRUb01vZHVsZSxcbiAgYWRkUHJvdmlkZXJUb01vZHVsZSxcbiAgcmVwbGFjZUltcG9ydCxcbiAgY29udGFpbnNQcm9wZXJ0eSxcbn0gZnJvbSAnLi91dGlsaXR5L2FzdC11dGlscyc7XG5cbmV4cG9ydCB7XG4gIEhvc3QsXG4gIENoYW5nZSxcbiAgTm9vcENoYW5nZSxcbiAgSW5zZXJ0Q2hhbmdlLFxuICBSZW1vdmVDaGFuZ2UsXG4gIFJlcGxhY2VDaGFuZ2UsXG4gIGNyZWF0ZVJlcGxhY2VDaGFuZ2UsXG4gIGNyZWF0ZUNoYW5nZVJlY29yZGVyLFxuICBjb21taXRDaGFuZ2VzLFxufSBmcm9tICcuL3V0aWxpdHkvY2hhbmdlJztcblxuZXhwb3J0IHsgQXBwQ29uZmlnLCBnZXRXb3Jrc3BhY2UsIGdldFdvcmtzcGFjZVBhdGggfSBmcm9tICcuL3V0aWxpdHkvY29uZmlnJztcblxuZXhwb3J0IHtcbiAgZmluZE1vZHVsZSxcbiAgZmluZE1vZHVsZUZyb21PcHRpb25zLFxuICBidWlsZFJlbGF0aXZlUGF0aCxcbiAgTW9kdWxlT3B0aW9ucyxcbn0gZnJvbSAnLi91dGlsaXR5L2ZpbmQtbW9kdWxlJztcblxuZXhwb3J0IHsgZmluZFByb3BlcnR5SW5Bc3RPYmplY3QgfSBmcm9tICcuL3V0aWxpdHkvanNvbi11dGlsdHMnO1xuXG5leHBvcnQge1xuICBhZGRSZWR1Y2VyVG9TdGF0ZSxcbiAgYWRkUmVkdWNlclRvU3RhdGVJbnRlcmZhY2UsXG4gIGFkZFJlZHVjZXJJbXBvcnRUb05nTW9kdWxlLFxuICBhZGRSZWR1Y2VyVG9BY3Rpb25SZWR1Y2VyTWFwLFxuICBvbWl0LFxufSBmcm9tICcuL3V0aWxpdHkvbmdyeC11dGlscyc7XG5cbmV4cG9ydCB7IGdldFByb2plY3RQYXRoLCBnZXRQcm9qZWN0LCBpc0xpYiB9IGZyb20gJy4vdXRpbGl0eS9wcm9qZWN0JztcblxuZXhwb3J0IGNvbnN0IHN0cmluZ1V0aWxzID0ge1xuICBkYXNoZXJpemUsXG4gIGRlY2FtZWxpemUsXG4gIGNhbWVsaXplLFxuICBjbGFzc2lmeSxcbiAgdW5kZXJzY29yZSxcbiAgZ3JvdXAsXG4gIGNhcGl0YWxpemUsXG4gIGZlYXR1cmVQYXRoLFxuICBwbHVyYWxpemUsXG59O1xuXG5leHBvcnQgeyB1cGRhdGVQYWNrYWdlIH0gZnJvbSAnLi91dGlsaXR5L3VwZGF0ZSc7XG5cbmV4cG9ydCB7IHBhcnNlTmFtZSB9IGZyb20gJy4vdXRpbGl0eS9wYXJzZS1uYW1lJztcblxuZXhwb3J0IHsgYWRkUGFja2FnZVRvUGFja2FnZUpzb24gfSBmcm9tICcuL3V0aWxpdHkvcGFja2FnZSc7XG5cbmV4cG9ydCB7IHBsYXRmb3JtVmVyc2lvbiB9IGZyb20gJy4vdXRpbGl0eS9saWJzLXZlcnNpb24nO1xuXG5leHBvcnQgeyB2aXNpdFRTU291cmNlRmlsZXMsIHZpc2l0TmdNb2R1bGVJbXBvcnRzIH0gZnJvbSAnLi91dGlsaXR5L3Zpc2l0b3JzJztcbiJdfQ==
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9tb2R1bGVzL3N0b3JlLWRldnRvb2xzL3NjaGVtYXRpY3MtY29yZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztJQUFBLGtGQVUyQjtJQUUzQiw0RkFBdUQ7SUFBOUMsdUNBQUEsWUFBWSxDQUFBO0lBRXJCLG9GQWM2QjtJQWIzQixnQ0FBQSxTQUFTLENBQUE7SUFDVCxxQ0FBQSxjQUFjLENBQUE7SUFDZCwyQ0FBQSxvQkFBb0IsQ0FBQTtJQUNwQiw2Q0FBQSxzQkFBc0IsQ0FBQTtJQUN0QixnREFBQSx5QkFBeUIsQ0FBQTtJQUN6QixtQ0FBQSxZQUFZLENBQUE7SUFDWiwyQ0FBQSxvQkFBb0IsQ0FBQTtJQUNwQiw2Q0FBQSxzQkFBc0IsQ0FBQTtJQUN0Qix3Q0FBQSxpQkFBaUIsQ0FBQTtJQUNqQix3Q0FBQSxpQkFBaUIsQ0FBQTtJQUNqQiwwQ0FBQSxtQkFBbUIsQ0FBQTtJQUNuQixvQ0FBQSxhQUFhLENBQUE7SUFDYix1Q0FBQSxnQkFBZ0IsQ0FBQTtJQUdsQiw4RUFVMEI7SUFQeEIsOEJBQUEsVUFBVSxDQUFBO0lBQ1YsZ0NBQUEsWUFBWSxDQUFBO0lBQ1osZ0NBQUEsWUFBWSxDQUFBO0lBQ1osaUNBQUEsYUFBYSxDQUFBO0lBQ2IsdUNBQUEsbUJBQW1CLENBQUE7SUFDbkIsd0NBQUEsb0JBQW9CLENBQUE7SUFDcEIsaUNBQUEsYUFBYSxDQUFBO0lBR2YsOEVBQTZFO0lBQXpELGdDQUFBLFlBQVksQ0FBQTtJQUFFLG9DQUFBLGdCQUFnQixDQUFBO0lBRWxELHdGQUsrQjtJQUo3QixtQ0FBQSxVQUFVLENBQUE7SUFDViw4Q0FBQSxxQkFBcUIsQ0FBQTtJQUNyQiwwQ0FBQSxpQkFBaUIsQ0FBQTtJQUluQix3RkFBZ0U7SUFBdkQsZ0RBQUEsdUJBQXVCLENBQUE7SUFFaEMsc0ZBTThCO0lBTDVCLHlDQUFBLGlCQUFpQixDQUFBO0lBQ2pCLGtEQUFBLDBCQUEwQixDQUFBO0lBQzFCLGtEQUFBLDBCQUEwQixDQUFBO0lBQzFCLG9EQUFBLDRCQUE0QixDQUFBO0lBQzVCLDRCQUFBLElBQUksQ0FBQTtJQUdOLGdGQUFzRTtJQUE3RCxtQ0FBQSxjQUFjLENBQUE7SUFBRSwrQkFBQSxVQUFVLENBQUE7SUFBRSwwQkFBQSxLQUFLLENBQUE7SUFFN0IsUUFBQSxXQUFXLEdBQUc7UUFDekIsU0FBUyxFQUFULG1CQUFTO1FBQ1QsVUFBVSxFQUFWLG9CQUFVO1FBQ1YsUUFBUSxFQUFSLGtCQUFRO1FBQ1IsUUFBUSxFQUFSLGtCQUFRO1FBQ1IsVUFBVSxFQUFWLG9CQUFVO1FBQ1YsS0FBSyxFQUFMLGVBQUs7UUFDTCxVQUFVLEVBQVYsb0JBQVU7UUFDVixXQUFXLEVBQVgscUJBQVc7UUFDWCxTQUFTLEVBQVQsbUJBQVM7S0FDVixDQUFDO0lBRUYsOEVBQWlEO0lBQXhDLGlDQUFBLGFBQWEsQ0FBQTtJQUV0QixzRkFBaUQ7SUFBeEMsaUNBQUEsU0FBUyxDQUFBO0lBRWxCLGdGQUE0RDtJQUFuRCw0Q0FBQSx1QkFBdUIsQ0FBQTtJQUVoQywwRkFBeUQ7SUFBaEQseUNBQUEsZUFBZSxDQUFBO0lBRXhCLGtGQVE0QjtJQVAxQix3Q0FBQSxrQkFBa0IsQ0FBQTtJQUNsQiwwQ0FBQSxvQkFBb0IsQ0FBQTtJQUNwQiwwQ0FBQSxvQkFBb0IsQ0FBQTtJQUNwQixxQ0FBQSxlQUFlLENBQUE7SUFDZixvQ0FBQSxjQUFjLENBQUE7SUFDZCxvQ0FBQSxjQUFjLENBQUE7SUFDZCxvQ0FBQSxjQUFjLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBkYXNoZXJpemUsXG4gIGRlY2FtZWxpemUsXG4gIGNhbWVsaXplLFxuICBjbGFzc2lmeSxcbiAgdW5kZXJzY29yZSxcbiAgZ3JvdXAsXG4gIGNhcGl0YWxpemUsXG4gIGZlYXR1cmVQYXRoLFxuICBwbHVyYWxpemUsXG59IGZyb20gJy4vdXRpbGl0eS9zdHJpbmdzJztcblxuZXhwb3J0IHsgaXNJdnlFbmFibGVkIH0gZnJvbSAnLi91dGlsaXR5L2FuZ3VsYXItdXRpbHMnO1xuXG5leHBvcnQge1xuICBmaW5kTm9kZXMsXG4gIGdldFNvdXJjZU5vZGVzLFxuICBnZXREZWNvcmF0b3JNZXRhZGF0YSxcbiAgZ2V0Q29udGVudE9mS2V5TGl0ZXJhbCxcbiAgaW5zZXJ0QWZ0ZXJMYXN0T2NjdXJyZW5jZSxcbiAgaW5zZXJ0SW1wb3J0LFxuICBhZGRCb290c3RyYXBUb01vZHVsZSxcbiAgYWRkRGVjbGFyYXRpb25Ub01vZHVsZSxcbiAgYWRkRXhwb3J0VG9Nb2R1bGUsXG4gIGFkZEltcG9ydFRvTW9kdWxlLFxuICBhZGRQcm92aWRlclRvTW9kdWxlLFxuICByZXBsYWNlSW1wb3J0LFxuICBjb250YWluc1Byb3BlcnR5LFxufSBmcm9tICcuL3V0aWxpdHkvYXN0LXV0aWxzJztcblxuZXhwb3J0IHtcbiAgSG9zdCxcbiAgQ2hhbmdlLFxuICBOb29wQ2hhbmdlLFxuICBJbnNlcnRDaGFuZ2UsXG4gIFJlbW92ZUNoYW5nZSxcbiAgUmVwbGFjZUNoYW5nZSxcbiAgY3JlYXRlUmVwbGFjZUNoYW5nZSxcbiAgY3JlYXRlQ2hhbmdlUmVjb3JkZXIsXG4gIGNvbW1pdENoYW5nZXMsXG59IGZyb20gJy4vdXRpbGl0eS9jaGFuZ2UnO1xuXG5leHBvcnQgeyBBcHBDb25maWcsIGdldFdvcmtzcGFjZSwgZ2V0V29ya3NwYWNlUGF0aCB9IGZyb20gJy4vdXRpbGl0eS9jb25maWcnO1xuXG5leHBvcnQge1xuICBmaW5kTW9kdWxlLFxuICBmaW5kTW9kdWxlRnJvbU9wdGlvbnMsXG4gIGJ1aWxkUmVsYXRpdmVQYXRoLFxuICBNb2R1bGVPcHRpb25zLFxufSBmcm9tICcuL3V0aWxpdHkvZmluZC1tb2R1bGUnO1xuXG5leHBvcnQgeyBmaW5kUHJvcGVydHlJbkFzdE9iamVjdCB9IGZyb20gJy4vdXRpbGl0eS9qc29uLXV0aWx0cyc7XG5cbmV4cG9ydCB7XG4gIGFkZFJlZHVjZXJUb1N0YXRlLFxuICBhZGRSZWR1Y2VyVG9TdGF0ZUludGVyZmFjZSxcbiAgYWRkUmVkdWNlckltcG9ydFRvTmdNb2R1bGUsXG4gIGFkZFJlZHVjZXJUb0FjdGlvblJlZHVjZXJNYXAsXG4gIG9taXQsXG59IGZyb20gJy4vdXRpbGl0eS9uZ3J4LXV0aWxzJztcblxuZXhwb3J0IHsgZ2V0UHJvamVjdFBhdGgsIGdldFByb2plY3QsIGlzTGliIH0gZnJvbSAnLi91dGlsaXR5L3Byb2plY3QnO1xuXG5leHBvcnQgY29uc3Qgc3RyaW5nVXRpbHMgPSB7XG4gIGRhc2hlcml6ZSxcbiAgZGVjYW1lbGl6ZSxcbiAgY2FtZWxpemUsXG4gIGNsYXNzaWZ5LFxuICB1bmRlcnNjb3JlLFxuICBncm91cCxcbiAgY2FwaXRhbGl6ZSxcbiAgZmVhdHVyZVBhdGgsXG4gIHBsdXJhbGl6ZSxcbn07XG5cbmV4cG9ydCB7IHVwZGF0ZVBhY2thZ2UgfSBmcm9tICcuL3V0aWxpdHkvdXBkYXRlJztcblxuZXhwb3J0IHsgcGFyc2VOYW1lIH0gZnJvbSAnLi91dGlsaXR5L3BhcnNlLW5hbWUnO1xuXG5leHBvcnQgeyBhZGRQYWNrYWdlVG9QYWNrYWdlSnNvbiB9IGZyb20gJy4vdXRpbGl0eS9wYWNrYWdlJztcblxuZXhwb3J0IHsgcGxhdGZvcm1WZXJzaW9uIH0gZnJvbSAnLi91dGlsaXR5L2xpYnMtdmVyc2lvbic7XG5cbmV4cG9ydCB7XG4gIHZpc2l0VFNTb3VyY2VGaWxlcyxcbiAgdmlzaXROZ01vZHVsZUltcG9ydHMsXG4gIHZpc2l0TmdNb2R1bGVFeHBvcnRzLFxuICB2aXNpdENvbXBvbmVudHMsXG4gIHZpc2l0RGVjb3JhdG9yLFxuICB2aXNpdE5nTW9kdWxlcyxcbiAgdmlzaXRUZW1wbGF0ZXMsXG59IGZyb20gJy4vdXRpbGl0eS92aXNpdG9ycyc7XG4iXX0=
@@ -2,4 +2,14 @@
2
2
  import * as ts from 'typescript';
3
3
  import { Tree } from '@angular-devkit/schematics';
4
4
  export declare function visitTSSourceFiles<Result = void>(tree: Tree, visitor: (sourceFile: ts.SourceFile, tree: Tree, result?: Result) => Result | undefined): Result | undefined;
5
+ export declare function visitTemplates(tree: Tree, visitor: (template: {
6
+ fileName: string;
7
+ content: string;
8
+ inline: boolean;
9
+ start: number;
10
+ }, tree: Tree) => void): void;
5
11
  export declare function visitNgModuleImports(sourceFile: ts.SourceFile, callback: (importNode: ts.PropertyAssignment, elementExpressions: ts.NodeArray<ts.Expression>) => void): void;
12
+ export declare function visitNgModuleExports(sourceFile: ts.SourceFile, callback: (exportNode: ts.PropertyAssignment, elementExpressions: ts.NodeArray<ts.Expression>) => void): void;
13
+ export declare function visitComponents(sourceFile: ts.SourceFile, callback: (classDeclarationNode: ts.ClassDeclaration, decoratorExpressionNode: ts.ObjectLiteralExpression) => void): void;
14
+ export declare function visitNgModules(sourceFile: ts.SourceFile, callback: (classDeclarationNode: ts.ClassDeclaration, decoratorExpressionNode: ts.ObjectLiteralExpression) => void): void;
15
+ export declare function visitDecorator(sourceFile: ts.SourceFile, decoratorName: string, callback: (classDeclarationNode: ts.ClassDeclaration, decoratorExpressionNode: ts.ObjectLiteralExpression) => void): void;
@@ -4,12 +4,13 @@
4
4
  if (v !== undefined) module.exports = v;
5
5
  }
6
6
  else if (typeof define === "function" && define.amd) {
7
- define("@ngrx/store-devtools/schematics-core/utility/visitors", ["require", "exports", "typescript"], factory);
7
+ define("@ngrx/store-devtools/schematics-core/utility/visitors", ["require", "exports", "typescript", "@angular-devkit/core"], factory);
8
8
  }
9
9
  })(function (require, exports) {
10
10
  "use strict";
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  const ts = require("typescript");
13
+ const core_1 = require("@angular-devkit/core");
13
14
  function visitTSSourceFiles(tree, visitor) {
14
15
  let result = undefined;
15
16
  for (const sourceFile of visit(tree.root)) {
@@ -18,6 +19,112 @@
18
19
  return result;
19
20
  }
20
21
  exports.visitTSSourceFiles = visitTSSourceFiles;
22
+ function visitTemplates(tree, visitor) {
23
+ visitTSSourceFiles(tree, source => {
24
+ visitComponents(source, (_, decoratorExpressionNode) => {
25
+ ts.forEachChild(decoratorExpressionNode, function findTemplates(n) {
26
+ if (ts.isPropertyAssignment(n) && ts.isIdentifier(n.name)) {
27
+ if (n.name.text === 'template' &&
28
+ ts.isStringLiteralLike(n.initializer)) {
29
+ // Need to add an offset of one to the start because the template quotes are
30
+ // not part of the template content.
31
+ const templateStartIdx = n.initializer.getStart() + 1;
32
+ visitor({
33
+ fileName: source.fileName,
34
+ content: n.initializer.text,
35
+ inline: true,
36
+ start: templateStartIdx,
37
+ }, tree);
38
+ return;
39
+ }
40
+ else if (n.name.text === 'templateUrl' &&
41
+ ts.isStringLiteralLike(n.initializer)) {
42
+ const parts = core_1.normalize(source.fileName)
43
+ .split('/')
44
+ .slice(0, -1);
45
+ const templatePath = core_1.resolve(core_1.normalize(parts.join('/')), core_1.normalize(n.initializer.text));
46
+ if (!tree.exists(templatePath)) {
47
+ return;
48
+ }
49
+ const fileContent = tree.read(templatePath);
50
+ if (!fileContent) {
51
+ return;
52
+ }
53
+ visitor({
54
+ fileName: templatePath,
55
+ content: fileContent.toString(),
56
+ inline: false,
57
+ start: 0,
58
+ }, tree);
59
+ return;
60
+ }
61
+ }
62
+ ts.forEachChild(n, findTemplates);
63
+ });
64
+ });
65
+ });
66
+ }
67
+ exports.visitTemplates = visitTemplates;
68
+ function visitNgModuleImports(sourceFile, callback) {
69
+ visitNgModuleProperty(sourceFile, callback, 'imports');
70
+ }
71
+ exports.visitNgModuleImports = visitNgModuleImports;
72
+ function visitNgModuleExports(sourceFile, callback) {
73
+ visitNgModuleProperty(sourceFile, callback, 'exports');
74
+ }
75
+ exports.visitNgModuleExports = visitNgModuleExports;
76
+ function visitNgModuleProperty(sourceFile, callback, property) {
77
+ visitNgModules(sourceFile, (_, decoratorExpressionNode) => {
78
+ ts.forEachChild(decoratorExpressionNode, function findTemplates(n) {
79
+ if (ts.isPropertyAssignment(n) &&
80
+ ts.isIdentifier(n.name) &&
81
+ n.name.text === property &&
82
+ ts.isArrayLiteralExpression(n.initializer)) {
83
+ callback(n, n.initializer.elements);
84
+ return;
85
+ }
86
+ ts.forEachChild(n, findTemplates);
87
+ });
88
+ });
89
+ }
90
+ function visitComponents(sourceFile, callback) {
91
+ visitDecorator(sourceFile, 'Component', callback);
92
+ }
93
+ exports.visitComponents = visitComponents;
94
+ function visitNgModules(sourceFile, callback) {
95
+ visitDecorator(sourceFile, 'NgModule', callback);
96
+ }
97
+ exports.visitNgModules = visitNgModules;
98
+ function visitDecorator(sourceFile, decoratorName, callback) {
99
+ ts.forEachChild(sourceFile, function findClassDeclaration(node) {
100
+ if (!ts.isClassDeclaration(node)) {
101
+ ts.forEachChild(node, findClassDeclaration);
102
+ }
103
+ const classDeclarationNode = node;
104
+ if (!classDeclarationNode.decorators ||
105
+ !classDeclarationNode.decorators.length) {
106
+ return;
107
+ }
108
+ const componentDecorator = classDeclarationNode.decorators.find(d => {
109
+ return (ts.isCallExpression(d.expression) &&
110
+ ts.isIdentifier(d.expression.expression) &&
111
+ d.expression.expression.text === decoratorName);
112
+ });
113
+ if (!componentDecorator) {
114
+ return;
115
+ }
116
+ const { expression } = componentDecorator;
117
+ if (!ts.isCallExpression(expression)) {
118
+ return;
119
+ }
120
+ const [arg] = expression.arguments;
121
+ if (!ts.isObjectLiteralExpression(arg)) {
122
+ return;
123
+ }
124
+ callback(classDeclarationNode, arg);
125
+ });
126
+ }
127
+ exports.visitDecorator = visitDecorator;
21
128
  function* visit(directory) {
22
129
  for (const path of directory.subfiles) {
23
130
  if (path.endsWith('.ts') && !path.endsWith('.d.ts')) {
@@ -36,23 +143,5 @@
36
143
  yield* visit(directory.dir(path));
37
144
  }
38
145
  }
39
- function visitNgModuleImports(sourceFile, callback) {
40
- ts.forEachChild(sourceFile, function findDecorator(node) {
41
- if (!ts.isDecorator(node)) {
42
- ts.forEachChild(node, findDecorator);
43
- return;
44
- }
45
- ts.forEachChild(node, function findImportsNode(n) {
46
- if (ts.isPropertyAssignment(n) &&
47
- ts.isArrayLiteralExpression(n.initializer) &&
48
- ts.isIdentifier(n.name) &&
49
- n.name.text === 'imports') {
50
- callback(n, n.initializer.elements);
51
- }
52
- ts.forEachChild(n, findImportsNode);
53
- });
54
- });
55
- }
56
- exports.visitNgModuleImports = visitNgModuleImports;
57
146
  });
58
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlzaXRvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9tb2R1bGVzL3N0b3JlLWRldnRvb2xzL3NjaGVtYXRpY3MtY29yZS91dGlsaXR5L3Zpc2l0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0lBQUEsaUNBQWlDO0lBR2pDLFNBQWdCLGtCQUFrQixDQUNoQyxJQUFVLEVBQ1YsT0FJdUI7UUFFdkIsSUFBSSxNQUFNLEdBQXVCLFNBQVMsQ0FBQztRQUMzQyxLQUFLLE1BQU0sVUFBVSxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDekMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxVQUFVLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1NBQzVDO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQWRELGdEQWNDO0lBRUQsUUFBUSxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQW1CO1FBQ2pDLEtBQUssTUFBTSxJQUFJLElBQUksU0FBUyxDQUFDLFFBQVEsRUFBRTtZQUNyQyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUNuRCxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNuQyxJQUFJLEtBQUssRUFBRTtvQkFDVCxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO29CQUM5QixNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUMsZ0JBQWdCLENBQ2hDLEtBQUssQ0FBQyxJQUFJLEVBQ1YsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLEVBQ3pDLEVBQUUsQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUN0QixJQUFJLENBQ0wsQ0FBQztvQkFDRixNQUFNLE1BQU0sQ0FBQztpQkFDZDthQUNGO1NBQ0Y7UUFFRCxLQUFLLE1BQU0sSUFBSSxJQUFJLFNBQVMsQ0FBQyxPQUFPLEVBQUU7WUFDcEMsSUFBSSxJQUFJLEtBQUssY0FBYyxFQUFFO2dCQUMzQixTQUFTO2FBQ1Y7WUFFRCxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1NBQ25DO0lBQ0gsQ0FBQztJQUVELFNBQWdCLG9CQUFvQixDQUNsQyxVQUF5QixFQUN6QixRQUdTO1FBRVQsRUFBRSxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsU0FBUyxhQUFhLENBQUMsSUFBSTtZQUNyRCxJQUFJLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDekIsRUFBRSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsYUFBYSxDQUFDLENBQUM7Z0JBQ3JDLE9BQU87YUFDUjtZQUVELEVBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLFNBQVMsZUFBZSxDQUFDLENBQUM7Z0JBQzlDLElBQ0UsRUFBRSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQztvQkFDMUIsRUFBRSxDQUFDLHdCQUF3QixDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUM7b0JBQzFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztvQkFDdkIsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssU0FBUyxFQUN6QjtvQkFDQSxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7aUJBQ3JDO2dCQUVELEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFLGVBQWUsQ0FBQyxDQUFDO1lBQ3RDLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBMUJELG9EQTBCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuaW1wb3J0IHsgVHJlZSwgRGlyRW50cnkgfSBmcm9tICdAYW5ndWxhci1kZXZraXQvc2NoZW1hdGljcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiB2aXNpdFRTU291cmNlRmlsZXM8UmVzdWx0ID0gdm9pZD4oXG4gIHRyZWU6IFRyZWUsXG4gIHZpc2l0b3I6IChcbiAgICBzb3VyY2VGaWxlOiB0cy5Tb3VyY2VGaWxlLFxuICAgIHRyZWU6IFRyZWUsXG4gICAgcmVzdWx0PzogUmVzdWx0XG4gICkgPT4gUmVzdWx0IHwgdW5kZWZpbmVkXG4pOiBSZXN1bHQgfCB1bmRlZmluZWQge1xuICBsZXQgcmVzdWx0OiBSZXN1bHQgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gIGZvciAoY29uc3Qgc291cmNlRmlsZSBvZiB2aXNpdCh0cmVlLnJvb3QpKSB7XG4gICAgcmVzdWx0ID0gdmlzaXRvcihzb3VyY2VGaWxlLCB0cmVlLCByZXN1bHQpO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24qIHZpc2l0KGRpcmVjdG9yeTogRGlyRW50cnkpOiBJdGVyYWJsZUl0ZXJhdG9yPHRzLlNvdXJjZUZpbGU+IHtcbiAgZm9yIChjb25zdCBwYXRoIG9mIGRpcmVjdG9yeS5zdWJmaWxlcykge1xuICAgIGlmIChwYXRoLmVuZHNXaXRoKCcudHMnKSAmJiAhcGF0aC5lbmRzV2l0aCgnLmQudHMnKSkge1xuICAgICAgY29uc3QgZW50cnkgPSBkaXJlY3RvcnkuZmlsZShwYXRoKTtcbiAgICAgIGlmIChlbnRyeSkge1xuICAgICAgICBjb25zdCBjb250ZW50ID0gZW50cnkuY29udGVudDtcbiAgICAgICAgY29uc3Qgc291cmNlID0gdHMuY3JlYXRlU291cmNlRmlsZShcbiAgICAgICAgICBlbnRyeS5wYXRoLFxuICAgICAgICAgIGNvbnRlbnQudG9TdHJpbmcoKS5yZXBsYWNlKC9eXFx1RkVGRi8sICcnKSxcbiAgICAgICAgICB0cy5TY3JpcHRUYXJnZXQuTGF0ZXN0LFxuICAgICAgICAgIHRydWVcbiAgICAgICAgKTtcbiAgICAgICAgeWllbGQgc291cmNlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZvciAoY29uc3QgcGF0aCBvZiBkaXJlY3Rvcnkuc3ViZGlycykge1xuICAgIGlmIChwYXRoID09PSAnbm9kZV9tb2R1bGVzJykge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgeWllbGQqIHZpc2l0KGRpcmVjdG9yeS5kaXIocGF0aCkpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2aXNpdE5nTW9kdWxlSW1wb3J0cyhcbiAgc291cmNlRmlsZTogdHMuU291cmNlRmlsZSxcbiAgY2FsbGJhY2s6IChcbiAgICBpbXBvcnROb2RlOiB0cy5Qcm9wZXJ0eUFzc2lnbm1lbnQsXG4gICAgZWxlbWVudEV4cHJlc3Npb25zOiB0cy5Ob2RlQXJyYXk8dHMuRXhwcmVzc2lvbj5cbiAgKSA9PiB2b2lkXG4pIHtcbiAgdHMuZm9yRWFjaENoaWxkKHNvdXJjZUZpbGUsIGZ1bmN0aW9uIGZpbmREZWNvcmF0b3Iobm9kZSkge1xuICAgIGlmICghdHMuaXNEZWNvcmF0b3Iobm9kZSkpIHtcbiAgICAgIHRzLmZvckVhY2hDaGlsZChub2RlLCBmaW5kRGVjb3JhdG9yKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0cy5mb3JFYWNoQ2hpbGQobm9kZSwgZnVuY3Rpb24gZmluZEltcG9ydHNOb2RlKG4pIHtcbiAgICAgIGlmIChcbiAgICAgICAgdHMuaXNQcm9wZXJ0eUFzc2lnbm1lbnQobikgJiZcbiAgICAgICAgdHMuaXNBcnJheUxpdGVyYWxFeHByZXNzaW9uKG4uaW5pdGlhbGl6ZXIpICYmXG4gICAgICAgIHRzLmlzSWRlbnRpZmllcihuLm5hbWUpICYmXG4gICAgICAgIG4ubmFtZS50ZXh0ID09PSAnaW1wb3J0cydcbiAgICAgICkge1xuICAgICAgICBjYWxsYmFjayhuLCBuLmluaXRpYWxpemVyLmVsZW1lbnRzKTtcbiAgICAgIH1cblxuICAgICAgdHMuZm9yRWFjaENoaWxkKG4sIGZpbmRJbXBvcnRzTm9kZSk7XG4gICAgfSk7XG4gIH0pO1xufVxuIl19
147
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlzaXRvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9tb2R1bGVzL3N0b3JlLWRldnRvb2xzL3NjaGVtYXRpY3MtY29yZS91dGlsaXR5L3Zpc2l0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0lBQUEsaUNBQWlDO0lBQ2pDLCtDQUEwRDtJQUcxRCxTQUFnQixrQkFBa0IsQ0FDaEMsSUFBVSxFQUNWLE9BSXVCO1FBRXZCLElBQUksTUFBTSxHQUF1QixTQUFTLENBQUM7UUFDM0MsS0FBSyxNQUFNLFVBQVUsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3pDLE1BQU0sR0FBRyxPQUFPLENBQUMsVUFBVSxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztTQUM1QztRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFkRCxnREFjQztJQUVELFNBQWdCLGNBQWMsQ0FDNUIsSUFBVSxFQUNWLE9BUVM7UUFFVCxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLEVBQUU7WUFDaEMsZUFBZSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSx1QkFBdUIsRUFBRSxFQUFFO2dCQUNyRCxFQUFFLENBQUMsWUFBWSxDQUFDLHVCQUF1QixFQUFFLFNBQVMsYUFBYSxDQUFDLENBQUM7b0JBQy9ELElBQUksRUFBRSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFO3dCQUN6RCxJQUNFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLFVBQVU7NEJBQzFCLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLEVBQ3JDOzRCQUNBLDRFQUE0RTs0QkFDNUUsb0NBQW9DOzRCQUNwQyxNQUFNLGdCQUFnQixHQUFHLENBQUMsQ0FBQyxX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QUNWO1lBRUQsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztTQUNuQztJQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyB0cyBmcm9tICd0eXBlc2NyaXB0JztcbmltcG9ydCB7IG5vcm1hbGl6ZSwgcmVzb2x2ZSB9IGZyb20gJ0Bhbmd1bGFyLWRldmtpdC9jb3JlJztcbmltcG9ydCB7IFRyZWUsIERpckVudHJ5IH0gZnJvbSAnQGFuZ3VsYXItZGV2a2l0L3NjaGVtYXRpY3MnO1xuXG5leHBvcnQgZnVuY3Rpb24gdmlzaXRUU1NvdXJjZUZpbGVzPFJlc3VsdCA9IHZvaWQ+KFxuICB0cmVlOiBUcmVlLFxuICB2aXNpdG9yOiAoXG4gICAgc291cmNlRmlsZTogdHMuU291cmNlRmlsZSxcbiAgICB0cmVlOiBUcmVlLFxuICAgIHJlc3VsdD86IFJlc3VsdFxuICApID0+IFJlc3VsdCB8IHVuZGVmaW5lZFxuKTogUmVzdWx0IHwgdW5kZWZpbmVkIHtcbiAgbGV0IHJlc3VsdDogUmVzdWx0IHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICBmb3IgKGNvbnN0IHNvdXJjZUZpbGUgb2YgdmlzaXQodHJlZS5yb290KSkge1xuICAgIHJlc3VsdCA9IHZpc2l0b3Ioc291cmNlRmlsZSwgdHJlZSwgcmVzdWx0KTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2aXNpdFRlbXBsYXRlcyhcbiAgdHJlZTogVHJlZSxcbiAgdmlzaXRvcjogKFxuICAgIHRlbXBsYXRlOiB7XG4gICAgICBmaWxlTmFtZTogc3RyaW5nO1xuICAgICAgY29udGVudDogc3RyaW5nO1xuICAgICAgaW5saW5lOiBib29sZWFuO1xuICAgICAgc3RhcnQ6IG51bWJlcjtcbiAgICB9LFxuICAgIHRyZWU6IFRyZWVcbiAgKSA9PiB2b2lkXG4pOiB2b2lkIHtcbiAgdmlzaXRUU1NvdXJjZUZpbGVzKHRyZWUsIHNvdXJjZSA9PiB7XG4gICAgdmlzaXRDb21wb25lbnRzKHNvdXJjZSwgKF8sIGRlY29yYXRvckV4cHJlc3Npb25Ob2RlKSA9PiB7XG4gICAgICB0cy5mb3JFYWNoQ2hpbGQoZGVjb3JhdG9yRXhwcmVzc2lvbk5vZGUsIGZ1bmN0aW9uIGZpbmRUZW1wbGF0ZXMobikge1xuICAgICAgICBpZiAodHMuaXNQcm9wZXJ0eUFzc2lnbm1lbnQobikgJiYgdHMuaXNJZGVudGlmaWVyKG4ubmFtZSkpIHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBuLm5hbWUudGV4dCA9PT0gJ3RlbXBsYXRlJyAmJlxuICAgICAgICAgICAgdHMuaXNTdHJpbmdMaXRlcmFsTGlrZShuLmluaXRpYWxpemVyKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgLy8gTmVlZCB0byBhZGQgYW4gb2Zmc2V0IG9mIG9uZSB0byB0aGUgc3RhcnQgYmVjYXVzZSB0aGUgdGVtcGxhdGUgcXVvdGVzIGFyZVxuICAgICAgICAgICAgLy8gbm90IHBhcnQgb2YgdGhlIHRlbXBsYXRlIGNvbnRlbnQuXG4gICAgICAgICAgICBjb25zdCB0ZW1wbGF0ZVN0YXJ0SWR4ID0gbi5pbml0aWFsaXplci5nZXRTdGFydCgpICsgMTtcbiAgICAgICAgICAgIHZpc2l0b3IoXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBmaWxlTmFtZTogc291cmNlLmZpbGVOYW1lLFxuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IG4uaW5pdGlhbGl6ZXIudGV4dCxcbiAgICAgICAgICAgICAgICBpbmxpbmU6IHRydWUsXG4gICAgICAgICAgICAgICAgc3RhcnQ6IHRlbXBsYXRlU3RhcnRJZHgsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHRyZWVcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgIG4ubmFtZS50ZXh0ID09PSAndGVtcGxhdGVVcmwnICYmXG4gICAgICAgICAgICB0cy5pc1N0cmluZ0xpdGVyYWxMaWtlKG4uaW5pdGlhbGl6ZXIpXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBjb25zdCBwYXJ0cyA9IG5vcm1hbGl6ZShzb3VyY2UuZmlsZU5hbWUpXG4gICAgICAgICAgICAgIC5zcGxpdCgnLycpXG4gICAgICAgICAgICAgIC5zbGljZSgwLCAtMSk7XG4gICAgICAgICAgICBjb25zdCB0ZW1wbGF0ZVBhdGggPSByZXNvbHZlKFxuICAgICAgICAgICAgICBub3JtYWxpemUocGFydHMuam9pbignLycpKSxcbiAgICAgICAgICAgICAgbm9ybWFsaXplKG4uaW5pdGlhbGl6ZXIudGV4dClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAoIXRyZWUuZXhpc3RzKHRlbXBsYXRlUGF0aCkpIHtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBmaWxlQ29udGVudCA9IHRyZWUucmVhZCh0ZW1wbGF0ZVBhdGgpO1xuICAgICAgICAgICAgaWYgKCFmaWxlQ29udGVudCkge1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZpc2l0b3IoXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBmaWxlTmFtZTogdGVtcGxhdGVQYXRoLFxuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGZpbGVDb250ZW50LnRvU3RyaW5nKCksXG4gICAgICAgICAgICAgICAgaW5saW5lOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBzdGFydDogMCxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgdHJlZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0cy5mb3JFYWNoQ2hpbGQobiwgZmluZFRlbXBsYXRlcyk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2aXNpdE5nTW9kdWxlSW1wb3J0cyhcbiAgc291cmNlRmlsZTogdHMuU291cmNlRmlsZSxcbiAgY2FsbGJhY2s6IChcbiAgICBpbXBvcnROb2RlOiB0cy5Qcm9wZXJ0eUFzc2lnbm1lbnQsXG4gICAgZWxlbWVudEV4cHJlc3Npb25zOiB0cy5Ob2RlQXJyYXk8dHMuRXhwcmVzc2lvbj5cbiAgKSA9PiB2b2lkXG4pIHtcbiAgdmlzaXROZ01vZHVsZVByb3BlcnR5KHNvdXJjZUZpbGUsIGNhbGxiYWNrLCAnaW1wb3J0cycpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmlzaXROZ01vZHVsZUV4cG9ydHMoXG4gIHNvdXJjZUZpbGU6IHRzLlNvdXJjZUZpbGUsXG4gIGNhbGxiYWNrOiAoXG4gICAgZXhwb3J0Tm9kZTogdHMuUHJvcGVydHlBc3NpZ25tZW50LFxuICAgIGVsZW1lbnRFeHByZXNzaW9uczogdHMuTm9kZUFycmF5PHRzLkV4cHJlc3Npb24+XG4gICkgPT4gdm9pZFxuKSB7XG4gIHZpc2l0TmdNb2R1bGVQcm9wZXJ0eShzb3VyY2VGaWxlLCBjYWxsYmFjaywgJ2V4cG9ydHMnKTtcbn1cblxuZnVuY3Rpb24gdmlzaXROZ01vZHVsZVByb3BlcnR5KFxuICBzb3VyY2VGaWxlOiB0cy5Tb3VyY2VGaWxlLFxuICBjYWxsYmFjazogKFxuICAgIG5vZGVzOiB0cy5Qcm9wZXJ0eUFzc2lnbm1lbnQsXG4gICAgZWxlbWVudEV4cHJlc3Npb25zOiB0cy5Ob2RlQXJyYXk8dHMuRXhwcmVzc2lvbj5cbiAgKSA9PiB2b2lkLFxuICBwcm9wZXJ0eTogc3RyaW5nXG4pIHtcbiAgdmlzaXROZ01vZHVsZXMoc291cmNlRmlsZSwgKF8sIGRlY29yYXRvckV4cHJlc3Npb25Ob2RlKSA9PiB7XG4gICAgdHMuZm9yRWFjaENoaWxkKGRlY29yYXRvckV4cHJlc3Npb25Ob2RlLCBmdW5jdGlvbiBmaW5kVGVtcGxhdGVzKG4pIHtcbiAgICAgIGlmIChcbiAgICAgICAgdHMuaXNQcm9wZXJ0eUFzc2lnbm1lbnQobikgJiZcbiAgICAgICAgdHMuaXNJZGVudGlmaWVyKG4ubmFtZSkgJiZcbiAgICAgICAgbi5uYW1lLnRleHQgPT09IHByb3BlcnR5ICYmXG4gICAgICAgIHRzLmlzQXJyYXlMaXRlcmFsRXhwcmVzc2lvbihuLmluaXRpYWxpemVyKVxuICAgICAgKSB7XG4gICAgICAgIGNhbGxiYWNrKG4sIG4uaW5pdGlhbGl6ZXIuZWxlbWVudHMpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRzLmZvckVhY2hDaGlsZChuLCBmaW5kVGVtcGxhdGVzKTtcbiAgICB9KTtcbiAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gdmlzaXRDb21wb25lbnRzKFxuICBzb3VyY2VGaWxlOiB0cy5Tb3VyY2VGaWxlLFxuICBjYWxsYmFjazogKFxuICAgIGNsYXNzRGVjbGFyYXRpb25Ob2RlOiB0cy5DbGFzc0RlY2xhcmF0aW9uLFxuICAgIGRlY29yYXRvckV4cHJlc3Npb25Ob2RlOiB0cy5PYmplY3RMaXRlcmFsRXhwcmVzc2lvblxuICApID0+IHZvaWRcbikge1xuICB2aXNpdERlY29yYXRvcihzb3VyY2VGaWxlLCAnQ29tcG9uZW50JywgY2FsbGJhY2spO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmlzaXROZ01vZHVsZXMoXG4gIHNvdXJjZUZpbGU6IHRzLlNvdXJjZUZpbGUsXG4gIGNhbGxiYWNrOiAoXG4gICAgY2xhc3NEZWNsYXJhdGlvbk5vZGU6IHRzLkNsYXNzRGVjbGFyYXRpb24sXG4gICAgZGVjb3JhdG9yRXhwcmVzc2lvbk5vZGU6IHRzLk9iamVjdExpdGVyYWxFeHByZXNzaW9uXG4gICkgPT4gdm9pZFxuKSB7XG4gIHZpc2l0RGVjb3JhdG9yKHNvdXJjZUZpbGUsICdOZ01vZHVsZScsIGNhbGxiYWNrKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZpc2l0RGVjb3JhdG9yKFxuICBzb3VyY2VGaWxlOiB0cy5Tb3VyY2VGaWxlLFxuICBkZWNvcmF0b3JOYW1lOiBzdHJpbmcsXG4gIGNhbGxiYWNrOiAoXG4gICAgY2xhc3NEZWNsYXJhdGlvbk5vZGU6IHRzLkNsYXNzRGVjbGFyYXRpb24sXG4gICAgZGVjb3JhdG9yRXhwcmVzc2lvbk5vZGU6IHRzLk9iamVjdExpdGVyYWxFeHByZXNzaW9uXG4gICkgPT4gdm9pZFxuKSB7XG4gIHRzLmZvckVhY2hDaGlsZChzb3VyY2VGaWxlLCBmdW5jdGlvbiBmaW5kQ2xhc3NEZWNsYXJhdGlvbihub2RlKSB7XG4gICAgaWYgKCF0cy5pc0NsYXNzRGVjbGFyYXRpb24obm9kZSkpIHtcbiAgICAgIHRzLmZvckVhY2hDaGlsZChub2RlLCBmaW5kQ2xhc3NEZWNsYXJhdGlvbik7XG4gICAgfVxuXG4gICAgY29uc3QgY2xhc3NEZWNsYXJhdGlvbk5vZGUgPSBub2RlIGFzIHRzLkNsYXNzRGVjbGFyYXRpb247XG5cbiAgICBpZiAoXG4gICAgICAhY2xhc3NEZWNsYXJhdGlvbk5vZGUuZGVjb3JhdG9ycyB8fFxuICAgICAgIWNsYXNzRGVjbGFyYXRpb25Ob2RlLmRlY29yYXRvcnMubGVuZ3RoXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgY29tcG9uZW50RGVjb3JhdG9yID0gY2xhc3NEZWNsYXJhdGlvbk5vZGUuZGVjb3JhdG9ycy5maW5kKGQgPT4ge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgdHMuaXNDYWxsRXhwcmVzc2lvbihkLmV4cHJlc3Npb24pICYmXG4gICAgICAgIHRzLmlzSWRlbnRpZmllcihkLmV4cHJlc3Npb24uZXhwcmVzc2lvbikgJiZcbiAgICAgICAgZC5leHByZXNzaW9uLmV4cHJlc3Npb24udGV4dCA9PT0gZGVjb3JhdG9yTmFtZVxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGlmICghY29tcG9uZW50RGVjb3JhdG9yKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgeyBleHByZXNzaW9uIH0gPSBjb21wb25lbnREZWNvcmF0b3I7XG4gICAgaWYgKCF0cy5pc0NhbGxFeHByZXNzaW9uKGV4cHJlc3Npb24pKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgW2FyZ10gPSBleHByZXNzaW9uLmFyZ3VtZW50cztcbiAgICBpZiAoIXRzLmlzT2JqZWN0TGl0ZXJhbEV4cHJlc3Npb24oYXJnKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNhbGxiYWNrKGNsYXNzRGVjbGFyYXRpb25Ob2RlLCBhcmcpO1xuICB9KTtcbn1cblxuZnVuY3Rpb24qIHZpc2l0KGRpcmVjdG9yeTogRGlyRW50cnkpOiBJdGVyYWJsZUl0ZXJhdG9yPHRzLlNvdXJjZUZpbGU+IHtcbiAgZm9yIChjb25zdCBwYXRoIG9mIGRpcmVjdG9yeS5zdWJmaWxlcykge1xuICAgIGlmIChwYXRoLmVuZHNXaXRoKCcudHMnKSAmJiAhcGF0aC5lbmRzV2l0aCgnLmQudHMnKSkge1xuICAgICAgY29uc3QgZW50cnkgPSBkaXJlY3RvcnkuZmlsZShwYXRoKTtcbiAgICAgIGlmIChlbnRyeSkge1xuICAgICAgICBjb25zdCBjb250ZW50ID0gZW50cnkuY29udGVudDtcbiAgICAgICAgY29uc3Qgc291cmNlID0gdHMuY3JlYXRlU291cmNlRmlsZShcbiAgICAgICAgICBlbnRyeS5wYXRoLFxuICAgICAgICAgIGNvbnRlbnQudG9TdHJpbmcoKS5yZXBsYWNlKC9eXFx1RkVGRi8sICcnKSxcbiAgICAgICAgICB0cy5TY3JpcHRUYXJnZXQuTGF0ZXN0LFxuICAgICAgICAgIHRydWVcbiAgICAgICAgKTtcbiAgICAgICAgeWllbGQgc291cmNlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZvciAoY29uc3QgcGF0aCBvZiBkaXJlY3Rvcnkuc3ViZGlycykge1xuICAgIGlmIChwYXRoID09PSAnbm9kZV9tb2R1bGVzJykge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgeWllbGQqIHZpc2l0KGRpcmVjdG9yeS5kaXIocGF0aCkpO1xuICB9XG59XG4iXX0=