* feat: add challenge editor tool
chore: prepare API/Client setup
feat: migrate to react!
feat: styling
fix: useEffect loop
feat: add challenge helpers
feat: use actual code editor
feat: styling
Bring it a bit more in line with /learn
* refactor: use workspaces
Which unfortunately required a rollback to React 16, because having
multiple React versions causes all sorts of issues.
* chore: apply Oliver's review suggestions
Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>
* chore: remove test files for now
* fix: prettier issue
* chore: apply oliver's review suggestions
Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>
* chore: move scripts to root
* fix: lint errors oops
* chore: remove reportWebVitals thing
* chore: DRY out paths
* fix: create-empty-steps takes one arg
* chore: start doesn't make sense now
* chore: DRY out button requests
* chore: one more review suggestion
Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>
* chore: cleanup CRA files
* fix: correct note for creating new project
* feat: enable js and jsx highlighting
* feat: include all superblocks
* feat: improve button ux
* feat: add "breadcrumbs"
* feat: add link back to block from step tools
* chore: remove unused deps
* chore: apply oliver's review suggestions
Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>
* chore: parity between file names and commands
Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>
* add active style
* add disable state
* add support for full-width
* add custom focus outline
* feat(ui-components): add support for link to Button component
* Add onClick action
* center content
* fix: token rework functional
fix: clean up
fix: more clean up
fix: more clean up
fix: add widget back to settings
fix:
fix:
fix: cypress
Apply suggestions from code review
Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>
fix: use flash enum
* chore: rename webhookToken -> userToken
fix: add translations I forgot to save
* fix: add missing tones for flash messages
* fix: node test
* feat: add function to map from path to superblock
* fix: use superblocks as keys in curriculum.json
* fix: handle new superblock names
* fix: keep deleting relational-database
* fix: add cert to email for when all certs are earned
* fix: unhide rdbms from production
* fix: cert project input field
* feat: add cypress tests
* fix: message on project pages to lower expectations
* fix: update instructions
* fix: add quincy's suggestions
* fix: add beta label and reorder
* fix: utils test
* fix: move rdbms to bottom of settings
* fix: cypress tests
* Apply suggestions from code review
Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>
* fix: only drop seeded users webhook tokens
Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>
* refactor: light tweaks for readability
* refactor: simplify metadata functions
* fix: most tests
* test: fix utils tests
* test: simplify mocks
* WIP: update get-last-step-file-content
* feat: finish create-next-step
* fix: type error
* test: provide mock meta.json for test
* refactor: get meta path from project path
* refactor: get project name from path
* refactor: simplify getProjectMetaPath further
Also removes some excessive mocking
* refactor: remove more mocks, always clear .env
* feat: update create-next-step
* feat: update create-empty steps
Also refactors slightly, so it's easier to insert steps into the meta
* docs: update challenge-helper-script docs
* feat: create-step-between
* refactor: allow metadata parse errors to propagate
* fix: convert reorderSteps to renameSteps
* refactor: create-step-between -> insert-step
* feat: update delete-step
* refactor: consolidate commands into commands.ts
* refactor: clean up and consolidation
* refactor: more cleanup
* fix: make cli args consistent
Everything accepts a single integer and nothing else
* refactor: renameSteps -> updateStepTitles
* docs: update with the names and args
* feat: add step validating meta + files are synced
fix: unhide cert from settings page
fix: add cert variables where missing
fix: show token on settings page
feat: add challenges to certified user data
fix: stylize settings page a little bit
fix: only show rdbms when upcomingChanges = true
fix: relational databases -> relational database
* feat: allow more 1000 steps to be created at once
* refactor: start migrating to typescript
* refactor: delete-step to ts
* refactor: migrated some helpers
* refactor: migrate create-empty-steps
* refactor: migrate create-step-between
* refactor: finish migrating to TS
* refactor: migrate tests
* fix: ensure mock.restore is done after each test
* fix: prevent double-tscing
* fix: repair the tests
* chore: use ts-node for scripts
We don't need the performance boost of incremental compilation and
ts-node is easier to work with
* refactor: consolidate tsconfigs
* refactor: replace gulp
* fix: use ts-node for build-curriculum
* fix: allow ts compilation of config
* feat: create and use create:config script
* fix: add /config to eslint projects
* fix: remove gulp script
* fix: handle missing solutions correctly
Rather than creating an [[]] the parser now creates [] which isEmpty().
This makes the test suite check the next challenge for a solution.
In addition, the logic for testing solutions was fixed.
* chore: update snapshots
* test: build new superblock in node.js-tests CI
* test: allow forward slash in superblock slug
* fix: borked tests oops
* test: ignore duplicated projects
* fix: i did not break these shaun did :)
* fix: idIndex is index of id not id
Co-authored-by: Nicholas Carrigan <nhcarrigan@gmail.com>
* fix: simplify mobile layout tabs
Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>
Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>
* test: login more directly
* test: separate login from other visits
In a single test, Cypress can only visit within a single domain, hence
the separation.
* chore: fail slowly for all strategies
* test: user certified user for showing cert
* test: fix and cleanup certifications
* feat: add notes tab to project based curriculum
* feat: add console key to i18n
* feat: add reset to i18n
* fix: use translations in action-row
* fix: use hasEditableBoundaries as check for when to display instructions/editor-tabs
* fix: clean up notes components and use prism formatting
* feat: add notes to docs/how-to-work-on-challenges
* revert: unused code
* fix: lint errors?
* fix: lint errors
* fix: add notes to graphql schema
* fix: add notes to challenge schema
* fix: only display notes on project based
* fix: add env data back to mobile layout
* fix: prettify
* revert: notes
* fix: hide notes on mobile for non project based
* rename: switchDisplayTab -> togglePane
* revert: hasEditableBoundaries check back to projectBasedChallenge check
* fix: replace index with script/styles as needed
* fix: remove redundant fileKey
It's overwritten by createPoly, so the parser does not need to create it
* fix: curriculum test suite
* Update client/src/templates/Challenges/classic/MultifileEditor.js
Co-authored-by: Shaun Hamilton <shauhami020@gmail.com>
Co-authored-by: Shaun Hamilton <shauhami020@gmail.com>
* feat(alert): initialize component
* feat(alert): add children prop
* feat(alert): add className prop
* feat(alert): add variant prop
* feat(alert): add close button and handle onDismiss click
* feat(alert): place all alert related css in alert.css
* feat: define state color variables and use them instead of bootstrap ones
* chore: remove unused classes
* feat: replace base alert styles with tailwind classes
* feat: extract close button to separate component
* chore: remove unused css
* test: add close button tests
* refactor: use more tailwind-like approach for adding colors to theme
* refactor: use more expressive prop name for close button label
* refactor: use semantic color names
* feat: add stories with/without close button
* chore: add missing variants
* chore: use constants for superblocks
* add prettier ts dec to challenge-helper-scripts
* config/ to ts. broken
* typescripterise tools/ and config/
* create global tsconfig, remove alternate configs
* delete temp ts->js, add to gitignore
* fix gitignore
* re-import SuperBlocks in super-block-intro.tsx
* remove renamed files added again
* fix config
* remove accidental files
* remove snap
* delete built files
* adjust eslintrc for enums
* add node types to root
* ignore build files in lint and prettier
* fix tools/ in tsconfig
* ignore annoying ts warnings
* prettierise Map/index.tsx
* fix enum to match lint rule
* rejig Map to render RWD superblock
* 'pretty minor' - implicitly tsc within root
Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>
* fix client/package.json for Gitpod
* broken: migrate @types to root
* fix: use typeRoots to prevent duplication
* fix show.tsx, try typeroots in root
* silly fix for duplicate node_modules types
* remove typeRoots from root
* fix: tsconfig or not tsconfig, that is the...
* fix: ...question: Whether 'tis nobler in the mind
to suffer the slings and arrows of outrageous configs...
* fix: Or to take Arms against a Sea of lint errors
And by opposing end them
Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>