* fix(files): Decouple files from challenges
* feat(server/react): Remove action logger
use redux remote devtools instead!
* feat(Challenges): Disable js on edit, enable on execute
* feat(Challenge/Preview): Show message when js is disabled
* refactor(frameEpic): Reduce code by using lodash
* feat(frameEpic): Disable js in preview by state
* feat(frameEpic): Colocate epic in Challenges/redux
* refactor(ExecuteChallengeEpic): CoLocated with Challenges
* refactor(executeChallengesEpic): Separate tests from main logic
* feat(Challenge/Preview): Update main on edit
* feat(frameEpuc): Replace frame on edit/execute
This allows for sandbox to work properly
* fix(Challenges/Utils): Require utisl
* revert(frameEpic): Hoist function to mount code in frame
* fix(frameEpic): Ensure new frame is given classname
* feat(executeChallenge): Update main on code unlocked
* fix(frameEpic): Filter out empty test message
* fix(Challenge/Preview): Remove unnessary quote in classname
* feat(codeStorageEpic): Separate localstorage from solutions loading
* fix(fetchUser): Merge user actions into one
prefer many effects from one action over one action to one effect
* fix(themes): Centralize theme utils and defs
* fix(entities.user): Fix user reducer namespacing
* feat(frame): Refactor frameEpic to util
* feat(Challenges.redux): Should not attempt to update main from storage
* fix(loadPreviousChallengeEpic): Refactor for RFR
* fix(Challenges.Modern): Show preview plane
* feat(seed): Add modern challenge
* chore(react): Use prop-types package
* feat: Initial refactor to redux-first-router
BREAKING CHANGE: Everything is different!
* feat: First rendering
* feat(routes): Challenges view render but failing
* fix(Challenges): Remove contain HOC
* fix(RFR): Add params selector
* fix(RFR): :en should be :lang
* fix: Update berks utils for redux
* fix(Map): Challenge link to arg
* fix(Map): Add trailing slash to map page
* fix(RFR): Use FCC Link
Use fcc Link to get around issue of lang being undefined
* fix(Router): Link to is required
* fix(app): Rely on RFR state for app lang
* chore(RFR): Remove unused RFR Link
* fix(RFR): Hydrate initial challenge using RFR and RO
* fix: Casing issue
* fix(RFR): Undefined links
* fix(RFR): Use onRoute<name> convention for route types
* feat(server/react): Add helpful redux logging/throwing
* fix(server/react): Strip out nonjson from state
This prevents thunks in routesMap from breaking serialization
* fix(RFR/Link): Should accept any renderable
* fix(RFR): Get redirects working
* fix(RFR): Redirects and not found's
* fix(Map): Move challenge onClick handler
* fix(Map): Allow Router.link to handle clicks after onClick
* fix(routes): Remove react-router-redux
* feat(Router): Add lang to all route actions by default
* fix(entities): Only fetch challenge if not already loaded
* fix(Files): Move files to own feature
* chore(Challenges): Remove vestigial hints logic
* fix(RFR): Update challenges on route challenges
* fix(code-storage): Should use events instead of commands
* fix(Map): ClickOnMap should not hold on to event
* chore(lint): Use eslint-config-freecodecamp
Closes#15938
* feat(Panes): Update panes on route instead of render
* fix(Panes): Store panesmap and update on fetchchallenges
* fix(Panes): Normalize panesmaps
* fix(Panes): Remove filter from createpanemap
* fix(Panes): Middleware on location meta object
* feat(Panes): Filter preview on nonhtml challenges
* build(babel): Add lodash babel plugin
* chore(lint): Lint js files
* fix(server/user-stats): Remove use of lodash chain
this interferes with babel-plugin-lodash
* feat(dev): Add remote redux devtools for ssr
* fix(Panes): Dispatch mount action
this is needed to trigger window/divider epics
* fix(Panes): Getpane to use new panesmap format
* fix(Panes): Always update panes after state
this lets the panes logic be affected by changes in state
* feat(rechallenge): Retool challenge framework
* fix(code-storage): should use setContent not updateContent
* fix(rechallenge): fix context issue and temporal zone of death
* fix(rechallenge): Fix frame sources for user code
* fix(polyvinyl): Set should ignore source and transform should keep track of source
* fix(rechallenge): Missing return statement causing issues