* feat: npm -> pnpm
This resolves the issues with the gatsby client (gatsby-plugin-pnpm
deals with the fact that gatsby is relying on its own dependencies
being de-duped)
and challenge-editor (which doesn't seem to want to automatically install
codemirror and needed its own eslint config)
* fix: correct mocha path for curriculum tests
* fix: use select workspace with -F not -w
* fix: reorganise packages and restrict hoisting
pnpm works best if the workspaces keep their own dependencies, since
dependencies are not flattened and then what node resolves from a
require is predictable.
@types seem to be a special case and more care is required to prevent
them getting smushed together in the root (hence the .npmrc)
* fix: add types for tools + root
* fix: decouple challenge-auditor from client
* fix: add ui-components types
* fix(client): use the latest types for react 16
* fix: prettify
* fix: prettierignore pnpm-lock
* fix: relax hoisting
Turns out pnpm works just fine with types. I don't know what was going
wrong before, but there are no-longer any type conflicts.
* fix: add @redux-saga/core to fix eslint issue
It seems to only be redux-saga that import/named can't cope with, so it
is probably okay to work around this one.
* chore: add chai to tools/scripts/build
* fix: add store to root for cypress
* fix: allow cypress to download binaries
If we want to keep preventing cypress from downloading binaries, we can
figure out a workaround, but I'm allowing it to ease the transition to
pnpm.
My guess about why this is happening is that npm triggers Cypress's
postinstall script, but pnpm does not (because pnpm install only
installs if necessary, perferring to link)
* chore: re-enable pre/post scripts
* fix: update build scripts for client
Co-authored-by: Shaun Hamilton <shauhami020@gmail.com>
* chore: update engines to use pnpm
* fix: enable choice of (super)block for tests
Only 'nix machines for now.
* chore: pin pnpm to version 7
* chore: remove last npms
Except web + curriculum-server. I'll update them when I start work on
them again.
* fix: lockfile check to catch any package-locks
* fix(action): install pnpm for upcoming tests
* chore: add nodemon to new api
Co-authored-by: Shaun Hamilton <shauhami020@gmail.com>
* change bonfire in index.js
* change bonfire in build.js
* change bonfire in challenge-types.js
* change bonfire in test-challenges.js
* add jsProject to constants.js
* chore: move files
* wip: i have no idea what i am doing
* feat: finish up the logic
* chore: use order from randy sheet
* chore: standardise titles
* feat: fix layout for new js projects
* fix: utils test
* fix: challenge tests
* fix: ignore show new curriculum on non-english tests
* chore: help category????
* fix: if these tests would fail locally that'd be great
* chore: duplicate ids
* fix: fallback to english challenges
All challenges will use the english version if a translated file is not
available. SHOW_NEW_CURRICULUM still gates what's shown in the client.
* refactor: use closures to simplify createChallenge
* refactor: remove messy destructure
* refactor: add meta via helper
* fix: fallback to [] for meta.required
* fix: repair challenge.block
* refactor: use CONST_CASE for meta + challenge dirs
* fix: catch empty superblocks immediately
* fix: clean up path.resolves
* fix: invalid syntax in JS project steps
* fix: default to english comments and relax tests
Instead of always throwing errors when a comment is not translated, the
tests now warn while SHOW_UPCOMING_CHANGES is true, so that tests will
pass while we're developing and allow translators time to work.
They still throw when SHOW_UPCOMING_CHANGES is false to catch issues
in production
* test: update createCommentMap test
* refactor: delete stale comment
* refactor: clarify validate with explanatory consts
* feat: throw if audited cert falls back to english
* fix: stop testing upcoming localized curriculum
* feat: make all sources available in tests
The original contents of all files (index.html, script.js etc.) will be
accessible in tests. For example __sources['index.html'] gets the
original html file and nothing else.
* feat: use __file to get user code
* fix: handle the sorting of transformed files
We can't use the ext property, since that is transformed, but the
history is maintained.
* test: make solutions polyVinyls for sorting
* refactor: inline prepareChallenge
* refactor: make solutions polys in getChallenges
* fix: convert each solution to a poly
* fix: skip empty solutions
* fix: get challenge file history in client
* refactor: stop calling isPoly from the client
* fix: remove debug console.log
* refactor: remove unnecessary sorting step
* 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>
* fix: ensures jquery exists for those challenges
For tests frame-runner.js imports jquery, but jquery challenges always
need it
* Revert "Revert "fix: only include frame-runner when running tests (#44337)" (#44419)"
This reverts commit c19bf504b8.
* 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>
* refactor: use enum
* feat: create links between legacy and new
* refactor: pull out legacy-links component
* fix: import order
* fix: provide icon for new superblock
* feat: only show the copy on the new superblock
* fix: use the proper i18n keys correctly
* feat: put the new superblock at the end of the map
* feat: update the new superblock title
* test: update for soft launch order
* fix: show original project links on /settings
Soft launch only.
* test: use SHOW_NEW_CURRICULUM in tests
* fix: rename the remaining rwd-22s
* feat: make the messge prettier
* fix: message copy
* refactor: make comment make sense
Co-authored-by: Ahmad Abdolsaheb <ahmad.abdolsaheb@gmail.com>
Co-authored-by: Nicholas Carrigan (he/him) <nhcarrigan@gmail.com>
* feat: use legacy flag
chore: reorder challenges
fix: linter
revert: server change
feat: unblock new editor
fix: proper order
fix: 0-based order
fix: broke the order
feat: move tribute certification to its own block
feat: split the old projects block into 4
fix: put all blocks in order
chore: add intro text
refactor: use block, not blockName in query
fix: project progress indicator
* fix: reorder new challenges/certs
* fix: reorder legacy challenges
* fix: reintroduce legacy certs
* feat: add showNewCurriculum flag to env
* chore: forgot sample.env
* feat: use feature flag for display
* fix: rename meta + dirs to match new blocks
* fix: add new blocks to help-category-map
* fix: update completion-modal for new GQL schema
* test: duplicate title/id errors -> warnings
* fix: update completion-modal to new GQL schema Mk2
* chore: re-order metas (again)
* fix: revert super-block-intro changes
The intro needs to show both legacy and new content. We need to decide
which pages are created, rather than than what a page shows when
rendered.
* feat: move upcoming curriculum into own superblock
* fix: handle one certification with two superBlocks
* fix: remove duplicated intros
* fix: remove duplicate projects from /settings
* fix: drop 'two' from Responsive Web Design Two
* chore: rename slug suffix from two to v2
* feat: control display of new curriculum
* feat: control project paths shown on /settings
* fix: use new project order for /settings
This does mean that /settings will change before the release, but I
don't think it's serious. All the projects are there, just not in the
legacy order.
* fix: claim/show cert button
* chore: remove isLegacy
Since we have legacy superblocks, we don't currently need individual
blocks to be legacy
* test: fix utils.test
* fix: verifyCanClaim needs certification
If Shaun removes the cert claim cards, maybe we can remove this entirely
* fix: add hasEditableBoundaries flags where needed
* chore: remove isUpcomingChange
* chore: v2 -> 22
Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>
* refactor: create superOrder from superblock
* chore: drop superOrders from meta
* fix: return null for 'certifications'
* fix: only set superOrder if it is needed
* fix(tests): remove filter from order tests
* test: use getSuperOrder, since superOrder has gone
* test: ignore certificates
* fix: getSuperOrder throw for 'certifications'
* test: remove certificate special case
It wasn't necessary, anyway (it had never been working because I put
certificate not certification)
Co-authored-by: Nicholas Carrigan <nhcarrigan@gmail.com>
* chore(tools): test curriculum order
* chore: update orders
* fix(tests): temporarily ignore cert super
The Relational Databases cert being 'upcomingChanges' is breaking
the tests.
* fix: graphql query here
* fix: use only one meta
* chore: remove unnecessary superOrders
* chore: zero-based indexing
* fix: update mock
* refactor: remove unused fixture
Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>
* 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>