* refactor: extract help category map as JSON
* refactor: extract block names as json
* feat: add create-project script
* fix: correct case for tsconfig target
Co-authored-by: Shaun Hamilton <shauhami020@gmail.com>
Co-authored-by: Shaun Hamilton <shauhami020@gmail.com>
* feat: set gap
* feat: add gap script conditionally
* feat: add 2.16.2 script
* feat: add initial tests
* feat: add dev and chinese gap scripts
Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>
The previous approach did avoid a fair number of jest.mock calls, but
made debugging the tests harder. If you don't know about the mapping
it's unclear why the imported module does not behave as normal.
By forcing the use of jest.mock it means that the answer to that
question is in the test you are working on.
* feat: get helpCategory from frontmatter
* DEBUG: sets all the projects to JavaScript
This is just so the tests pass, it'll need to go.
* fix: updated helpCategoryMap categories
* fix: added Python to helpCategory frontmatter key
Co-authored-by: Randell Dawson <rdawson@onepathtech.com>
* feat: created step instructions for cafe menu
fix: added instructions to steps 1-31
fix: changed steps 29-31
fix: added instructions for steps 32-42
fix: changed prototype class definition
fix: padded file names
fix: added instructions for steps 43-61
fix: add object id to final.md and final prototype to meta.json
fix: correct typos in steps 26 and 27
fix: misc wording changes
fix: added forward slash to closing html tag
fix: added instructions for steps 62-75
feat: added instructions to steps 76-79
fix: added FOOTER comment for steps 68-75
fix: add steps 68a and 68b
fix: add steps 69a and reorder steps
fix: added instructions to the final steps
* fix: remove final.md
* fix: fixed typo of menue to menu
Co-authored-by: Tom <20648924+moT01@users.noreply.github.com>
* fix: changed wording to improve readability
Co-authored-by: Tom <20648924+moT01@users.noreply.github.com>
* fix: changed wording to improve readability
Co-authored-by: Tom <20648924+moT01@users.noreply.github.com>
* fix: changed wording to improve readability
Co-authored-by: Tom <20648924+moT01@users.noreply.github.com>
* fix: combined two lines into same paragraph
Co-authored-by: Tom <20648924+moT01@users.noreply.github.com>
Co-authored-by: Tom <20648924+moT01@users.noreply.github.com>
* feat: added Cat Photo App project
Added new steps
feat: add tests + targetted hints for demo
simplify wording and combine some tests
feat: update text and add tests/hints
fix: changed descriptions and tests
feat: added tests for part 11 - 15
fix: reworded description for steps 2 and 10
fix: changed isBeta to isHidden
fix: temporarily remove fcc-editable strings
fix: added project to challengeTypes.js
fix: added missing parentheses
fix: test text improvements
fix: changes to tests and text discussed in meeting
fix: adjust logic for detecting indentation in part 07
fix: missing regex characters and made last test more permissive for part 04
feat: add steps 25 to 55 and notes
fix: added h1 element back to steps 5-24
fix: h1 and h2 elements from steps 25 to 50
fix: added missing DOCTYPE declaration steps 20-24
fix: miscellaneous text edits
fix: break up part 28, change local paths for images to short s3 cdn URLs
fix: part 01 and 02 descriptions and tests
feat: pull in changes from #39145 and remove solution sections
fix: adjust descriptions and break up steps 33 and 35
fix: break up more steps and adjust text
feat: add tests for parts 25 - 30
* fix: ran reorder-steps.js
* fix: added editable region markers
* fix: standardize opening tag hint text
* fix: remove trailing periods from descriptions and hints and adjust tests
* fix: remove unnecessary instructions sections
* fix: added test to check for only one h1 element
* fix: removed comma
* fix: changed paragraph element to `p` element
* fix: added test for extra h1 element
* fix: test to validate only one img element exists
* fix: replaced code tags with backticks
* fix: reworded description
* fix: reworded step description
* fix: changed tests for first step
* fix: change last two alt values to sentences
* fix: check for spaces in text strings
* fix: removed extra dot before replace method
* fix: moved example before instruction
* fix: rearranged step 6 tests
* fix: capitalized p in paragraph
* fix: rewored step 7's description and a test text
* fix: corrected test for step 8
* fix: improved step 9 tests
* fix: moved example above instruction
* fix: corrected step 9 test wording
* fix: rearrange test order for step 10
* fix: moved example before instructions for step 11
* fix: improved step 12 descripton and tests
* fix: corrected tests for steps 9, 10, 11, 13, 14
* fix: added ERMs to steps 4-14
* fix: minor typos
* fix: reword steps so examples are above instructions
* fix: introduce inline and block elements and use divs instead of br
* fix: add or adjust tests for steps 15 - 27
* fix: moved ERM up one line
* fix: removed unnecessary quotes in tests' text
* fix: added dfn tags for step 45
* fix: removed adding # to href step
* fix: tests 15 - 16
* fix: reword descriptions so they're not as hand holdy
* fix: reorder/reword steps 58 - 60
* feat: simplify radio button steps
* fix: wording and add demo step
* fix: remove doctype and teach in last step
* fix: update part-demo
* fix: added some more step 15 hints
* fix: added step to introduce section elems
* fix: added section elements to project
* fix: update final code
* fix: update tests for 15a and 16
* fix: add section elements to parts 45 to 61
* fix: change p elements to h3, update tests and text
* fix: added new test for step 9
* fix: fixed/added tests for steps 15-30a
* fix: use fieldset elements instead of divs in the form
* fix: added new test to setp 30a
* fix: changed `main` to `section`
* fix: corrected/added tests for step 31
* feat: add tests 32 - 36
* fix: revert change to js rpg game
* fix: simplify tests 32 - 36
* fix: updated submit-cat-form url
fix: changed submit-cat-form url
* fix: added/rearranged tests steps 32-36
* fix: added tests for step 36a
* fix: used hasAttribute where applicable
* fix: misc edits for steps 10 and 35-36a
* fix: add tests to step 37
* fix: reworded step 37
* fix: added more verbiage to steps 35 and 36
* fix: modified step 38 desc and added tests
* fix: added hints/tests for step 40
* fix: added hints/tests for step 41
* fix: added hints/tests for steps 42 and 43
* fix: made attribute values match exactly
* fix: change wording from text input to text field
* fix: rearrange name attribute lessons
* feat: tests for 44 - 44b
* fix: added a step 35a
* fix: added name="catphotourl" to steps 36-61
* fix: reworded steps 41 and 43
* fix: removed intro to for attribute
* fix: rewrite of step 44b's desc and tests
* fix: added step 45 hints/tests
fix
* fix: removed for attribute from steps 45a-61
* fix: removed extra )
* fix: wrapped "section" with backticks
* fix: added test for steps 45a and 45b
* fix: adjust position of label steps 55-61
* fix: removed conole.log statements
* fix: added tests to step 45c
* fix: renamed step 49 to step 46a
* fix: moved label element for steps 48-53
* fix: reworded step 47 description and instructions
* fix: typos in description and test text
* feat: add tests 46-48
* fix: wording
* fix: remove case insensitivity from a couple of tests
* fix: wording and add erms
* fix: add additional test for step 48
* fix: added hints/tests for step 50
* fix: added hints/tests for step 51
* fix: added hints/tests to step 53
* fix: added hints/tests for step 55
* fix: added hints/tests for step 56
* feat: tests for 57-61
* fix: removed duplicate test in step 55
* fix: adjusted 1st test for step 57
* fix: simplified test for title text
* fix: improved tests for step 60-61
* fix: removed demo.md file
* fix: ran reorder-steps.js
* fix: part 10 description
* fix: part 14 description
* fix: part 24 - move ERMs
* fix: part 05 description
* fix: part 54 test text
* fix: part 06 - wording and add test for p and main closing tag order
* fix: part 50 - add test to check for order of fieldset elements
* feat: value attribute for radio buttons step and seed changes
* feat: value attribute for checkboxes step and seed changes
* fix: update part 14 description
* fix: revert ERMs for part 24
* fix: remove last test in part 06
* fix: text and typos for new radio and checkbox lessons
* fix: text and typos for new radio and checkbox lessons
* fix: add test to part 01
* fix: ran reorder-steps.js
Co-authored-by: Kris Koishigawa <scissorsneedfoodtoo@gmail.com>
* fix: improve tests for video challenges
* fix: remove unused challenges + get rid of no description warning
* fix: remove non-existent challenges from meta
The interview prep section includes many challenges that require long
running calculations which can be mistaken for infinite loops. This
removes the loop protection from those challenges, while the tests are
being evaluated.
It keeps the protection for the preview, since it is easy to create
broken code while working on a challenge and that should not crash the
site.
* fix: make help button use subforum topics
* fix: add test to check that block exists
Co-authored-by: ojeytonwilliams <ojeytonwilliams@gmail.com>
* fix: improve error message
* Update curriculum/test/test-challenges.js
Co-Authored-By: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>
<!-- Please follow this checklist and put an x in each of the boxes, like this: [x]. It will ensure that our team takes your pull request seriously. -->
- [x] I have read [freeCodeCamp's contribution guidelines](https://github.com/freeCodeCamp/freeCodeCamp/blob/master/CONTRIBUTING.md).
- [x] My pull request has a descriptive title (not a vague title like `Update index.md`)
- [x] My pull request targets the `master` branch of freeCodeCamp.
- [x] None of my changes are plagiarized from another source without proper attribution.
- [x] All the files I changed are in the same world language (for example: only English changes, or only Chinese changes, etc.)
- [x] My changes do not use shortened URLs or affiliate links.
<!--If your pull request closes a GitHub issue, replace the XXXXX below with the issue number.-->
Closes#35749
<!-- Please follow this checklist and put an x in each of the boxes, like this: [x]. It will ensure that our team takes your pull request seriously. -->
- [x] I have read [freeCodeCamp's contribution guidelines](https://github.com/freeCodeCamp/freeCodeCamp/blob/master/CONTRIBUTING.md).
- [x] My pull request has a descriptive title (not a vague title like `Update index.md`)
- [x] My pull request targets the `master` branch of freeCodeCamp.
* 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
* chore(packages): Update redux utils
* feat(Panes): Invert control of panes map creation
* feat(Modern): Add view
* feat(Panes): Decouple panes from Challenges
* fix(Challenges): Decouple challenge views from panes map
* fix(Challenge/views): PanesMap => mapStateToPanesMap
This clarifies what these functions are doing
* fix(Challenges): Add view type
* fix(Panes): Remove unneeded panes container
* feat(Panes): Invert control of pane content render
This decouples the Panes from the content they render, allowing for
greater flexibility.
* feat(Modern): Add side panel
This is common between modern and classic
* feat(seed): Array to string file content
* fix(files): Modern files should be polyvinyls
* feat(Modern): Create editors per file
* fix(seed/React): Incorrect keyfile name
* feat(Modern): Highligh jsx correctly
This adds highlighting for jsx. Unfortunately, this disables linting for
non-javascript files as jshint will only work for those
* feat(rechallenge): Add jsx ext to babel transformer
* feat(seed): Normalize challenge files head/tail/content
* refactor(rechallenge/build): Rename function
* fix(code-storage): Pull in files from localStorage
* feat(Modern/React): Add Enzyme to test runner
This enables testing of React challenges
* feat(Modern): Add submission type
* refactor(Panes): Rename panes map update action
* feat(app): Restructure app to be more flexible and redux idiomatic
BREAKING CHANGE: Lots of breaking changes
* refactor(challenges): Redux to started file structure
* fix(app): lint issues due to refactor
* fix(settings): Refactor settings to use folder structure
* refactor(challenges): Move step redux stuff into step folder
* fix(challenges): Remove fetchchallenges actions
* refactor(challenges): Move project redux logic into project view subdirectory
* refactor(app): %s/sagas/epics/g
* refactor(redux): Use new redux-epic with combineEpic and ofType
* refactor(app): Move challenge selector to app level
* fix(app): Move loading challenge info into challenge route
This moves a lot of the logic needed to load challenge info into the challenge app. This decouples
the main app from the challenge route
* refactor(map): Map is now decoupled from challenges
* refactor(challenges): Use selectors everywhere instead of guessing state shape
* refactor(client): refactor client epics to use selectors
* refactor(app): Refactor userSelector to return user object instead of object.user
* refactor(entities): Move entities logic into it's own file
* fix(redux): combineTypes should be combineActions
* fix(app): reducer namespacing and import
* fix(Map): Fix undefined type and update redux-action
* fix(redux): Refactor fetchUser to be more declarative
Use rxjs methods instead of imperative if/else. Also prevent non-actions from being emitted
* fix(redux): toString multi phase action types
* fix(redux): typecast multiphase type, fix typo in reducer
toString multiphase types in fetch challenge epic. Add epic to epics lists. Fix type in fetch
challenge complete handler
* fix(redux): updateCurrentChallengelogic should be centerlized
Move route changes to one location.
* fix(Nav): Prevent event object from hanging around
closeDropDown/openDropDown where handing on to the event object. This was causing issues with react
since event objects are recycled in React.
* fix(Map.Challenge): decouple map selector
* fix(Map): Decouple panel selectors from props
Panel Selectors no longer need to know the shape of a components props. Refactored component
selectors to decouple them entities state shape
* fix(Map.redux): Add select challenge epic and connect map epics
* fix(redux.analytics): Fix meta creator and nav/map events
* fix(redux): Update current challenge ajax
* fix(challenges): ssr fetch challenge should update challenge ui
Was using an epic to update challenge ui on fetch complete, but this was not working on ssr due to
the way ssr disables epics to wait for completion. This commit fixes this by causing the complete to
directly update state in the challenge ui
* fix(challenges): wrong import of types, refactor epic name
* fix(redux): Prevent fetch challenge epic from emitting null to dispatch
* fix(redux): prevent executechallenge from emitting null
* fix(challenges.redux): testsSelector returns just tests
* fix(challenges.redux): Prevent completion challenge from emitting null
* refactor(Challenges.Step): Refactor step challenge to release event object
* fix(redux): wrap reducers in factories
reducers exported from features need to be factories
this helps avoid cyclic requires messing up reducer creation
We end up with exports from files being undefined as node tries
to resolve cyclic dependencies.
This prevents that by wrapping the `handleActions` call so that the ref
to types imported from parent features are closures and can be resolved
by node before we need them.
* fix(Map): createUi not working correctly
map utils should receive just map ui state, createMapUi needs to add title to challenge
* feat(Challenges): Adds Panes and panes backend challenge
* fix: Create child container to wrap children
Create a ChildContainer comp' to wrap all children that represent the view for the current route.
This let's the child route define if they want a full width view or if they want the standard
max-width view.
* feat(Panes): panes now render dividers
* feat(Panes): Get divider to move currectly
* fix(Nav): Add top margin to contained childs
Move margin-bottom from nav to child container as margin top. This let's the jsbin style views fit
snug with navbar
* fix(Panes): Should be contained within their borders
* feat(Panes): Update navbar height of pane on app mount
* feat(Panes): Toggle map on map nav btn click
* fix(gulpfile): Ensure nodemon exits on restart
On process exit, wait for nodemon to shutdown before process.exit
* feat(Panes): Make Panes redux first
* fix(Panes): Fix divider positioning
* fix(Panes): Update divider moved handler
dividerMoved action now uses new panesByName structure
* feat(Panes): Pane nav button will hide panes
* chore(package-lock): Update package lock
* feat(Panes.redux): Recaculate dividers on pane toggle
* fix(Challenges): Update challenge on dashedName change
This fixes backwards navigation not updating the redux state current
challenge
* feat(Panes.redux): Clear panes on unmount
Clearing panes on unmount will clear bin buttons in nav
* refactor(Map): Colocate styles
* feat(Map): New map layout
* fix(Map): No longer has it's own page
* fix: FetchChallenges on appMounted
* feat: Normalize fetchChallenge(s) results
This allows superblocks to be sent with both fetchChallenge and
fetchChallenges so the map is always populated on first load
* feat(Map): Show blocks on first load
* fix(less): Remove old css
* feat(Nav): Reduce nav height
* fix(Nav): Render nav after content
Render nav after content and use css to reverse again on screen. We do
this so the panes can render first and update redux panes state which
will then update the nav ui state before nav has a chance to render
* fix(Panes): Add container
This adds a Panes Container that will allow it to udpate redux state so
Panes Component will have redux state ready to actually render panes
* feat(Challenges.Classic): Add panes
* fix(Challenge.Classic): Editor onchange should not need to know about file
* fix(Panes): Index on panes hide should account for hidden pane
* fix(Challanges.Classic): Fix panes types
* fix(Challenges): Add completion modal to all challenges
Change classic modal to completion modal
* fix(Panes): Dividers live on top of planes
* fix(Challenges): Remove codemirror theme
Remove codemirror theme and remove borders from preview frame
* fix(Challenges.Classic): Remove old component
* feat(Challenges.Step): Add panes to step challenge
* feat(Challenges.Project): Add panes to projects
* fix(Challenges.Projects): Remove row
* fix(Modals): Move modal text color to challenge less
This text color is dependent on the actual header color
* fix(Map): Use Superblock title for ui
* fix(Map): Reduce panel header height
* fix(app): Capitalize Toasts folder
Feature folders should be campitalized
* chore(Map): Remove unused epic file
* fix(Step): Fix tests
* test(Map): Update createMapUi tests input
* 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