* 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
* 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: use an iframe to preserve head and body
* fix: remove unnecessary parsing of html
The contents gets inserted into the DOM during transformHtml, which
is always part of the build pipeline
* fix: pipe contents through iframe
* refactor: use the same code for both transforms
* fix: try to handle test errors better
Co-authored-by: moT01 <20648924+moT01@users.noreply.github.com>