refactor(tools, curriculum): use challenge type 31 for review pages (#61963)

This commit is contained in:
Huyen Nguyen
2025-09-06 12:07:48 +07:00
committed by GitHub
parent e4144d145a
commit 87cde2d1e8
76 changed files with 85 additions and 79 deletions

View File

@@ -143,7 +143,8 @@ export const runnerTypes: Record<
[challengeTypes.jsLab]: 'javascript',
[challengeTypes.pyLab]: 'python',
[challengeTypes.dailyChallengeJs]: 'javascript',
[challengeTypes.dailyChallengePy]: 'python'
[challengeTypes.dailyChallengePy]: 'python',
[challengeTypes.review]: 'dom'
};
export async function getTestRunner(buildData: BuildChallengeData) {

View File

@@ -1,7 +1,7 @@
---
id: 6723d35bb07d1bd220d0f28d
title: Asynchronous JavaScript Review
challengeType: 24
challengeType: 31
dashedName: review-asynchronous-javascript
---

View File

@@ -1,7 +1,7 @@
---
id: 6724e46581a1742244e45b59
title: Bash and SQL Review
challengeType: 24
challengeType: 31
dashedName: review-bash-and-sql
---

View File

@@ -1,7 +1,7 @@
---
id: 6724e387ee098d1ef33108ba
title: Bash Commands Review
challengeType: 24
challengeType: 31
dashedName: review-bash-commands
---

View File

@@ -1,7 +1,7 @@
---
id: 6724e417419c2f211bb41bfc
title: Bash Scripting Review
challengeType: 24
challengeType: 31
dashedName: review-bash-scripting
---

View File

@@ -1,7 +1,7 @@
---
id: 671a887a7e62c75e9ab1ee4a
title: Basic CSS Review
challengeType: 24
challengeType: 31
dashedName: review-basic-css
---

View File

@@ -1,7 +1,7 @@
---
id: 67072fc183c7ca6c588feb4d
title: Basic HTML Review
challengeType: 24
challengeType: 31
dashedName: basic-html-review
---

View File

@@ -1,7 +1,7 @@
---
id: 67f39d848979082814c07d9c
title: Classes and Objects Review
challengeType: 24
challengeType: 31
dashedName: review-classes-and-objects
---

View File

@@ -1,7 +1,7 @@
---
id: 671a87e6dcef5b5bd765e5ed
title: Computer Basics Review
challengeType: 24
challengeType: 31
dashedName: review-computer-basics
---

View File

@@ -1,7 +1,7 @@
---
id: 671a955b74ab5588735800d1
title: CSS Accessibility Review
challengeType: 24
challengeType: 31
dashedName: review-css-accessibility
---

View File

@@ -1,7 +1,7 @@
---
id: 671a999cc77b7f9bceb4caeb
title: CSS Animations Review
challengeType: 24
challengeType: 31
dashedName: review-css-animations
---

View File

@@ -1,7 +1,7 @@
---
id: 671a95990b86b68961340adc
title: CSS Attribute Selectors Review
challengeType: 24
challengeType: 31
dashedName: review-css-attribute-selectors
---

View File

@@ -1,7 +1,7 @@
---
id: 671a88d636cebc5fbd407b78
title: Lists, Links, CSS Background and Borders Review
challengeType: 24
challengeType: 31
dashedName: review-css-backgrounds-and-borders
---

View File

@@ -1,7 +1,7 @@
---
id: 671a90c1cf517678b130419e
title: CSS Colors Review
challengeType: 24
challengeType: 31
dashedName: review-css-colors
---

View File

@@ -1,7 +1,7 @@
---
id: 671a940c69cdee833d4cc312
title: CSS Flexbox Review
challengeType: 24
challengeType: 31
dashedName: review-css-flexbox
---

View File

@@ -1,7 +1,7 @@
---
id: 671a99394bedfb9a5bc687c4
title: CSS Grid Review
challengeType: 24
challengeType: 31
dashedName: review-css-grid
---

View File

@@ -1,7 +1,7 @@
---
id: 671a9311a289ae7fff25d88e
title: CSS Layouts and Effects Review
challengeType: 24
challengeType: 31
dashedName: review-css-layout-and-effects
---

View File

@@ -1,7 +1,7 @@
---
id: 6724e2026e608219108d385a
title: CSS Libraries and Frameworks Review
challengeType: 24
challengeType: 31
dashedName: review-css-libraries-and-frameworks
---

View File

@@ -1,7 +1,7 @@
---
id: 671a967424a00e8c6561b182
title: CSS Positioning Review
challengeType: 24
challengeType: 31
dashedName: review-css-positioning
---

View File

@@ -1,7 +1,7 @@
---
id: 671a907bad4538752765f2ff
title: CSS Pseudo-classes Review
challengeType: 24
challengeType: 31
dashedName: review-css-pseudo-classes
---

View File

@@ -1,7 +1,7 @@
---
id: 671a8f8350c20a7439015c98
title: CSS Relative and Absolute Units Review
challengeType: 24
challengeType: 31
dashedName: review-css-relative-and-absolute-units
---

View File

@@ -1,7 +1,7 @@
---
id: 671a9528fc4f1487cf265444
title: CSS Typography Review
challengeType: 24
challengeType: 31
dashedName: review-css-typography
---

View File

@@ -1,7 +1,7 @@
---
id: 671a98fbaabfba994e3d9a7c
title: CSS Variables Review
challengeType: 24
challengeType: 31
dashedName: review-css-variables
---

View File

@@ -1,7 +1,7 @@
---
id: 671a9a0a140c2b9d6a75629f
title: CSS Review
challengeType: 24
challengeType: 31
dashedName: review-css
---

View File

@@ -1,7 +1,7 @@
---
id: 67f39dc7129b092b27099d8c
title: Data Structures Review
challengeType: 24
challengeType: 31
dashedName: review-data-structures
---

View File

@@ -1,7 +1,7 @@
---
id: 6723cd54fc196dbd053f9dfb
title: Debugging JavaScript Review
challengeType: 24
challengeType: 31
dashedName: review-debugging-javascript
---

View File

@@ -1,7 +1,7 @@
---
id: 671a892927fdba60db05edfe
title: Design Fundamentals Review
challengeType: 24
challengeType: 31
dashedName: review-design-fundamentals
---

View File

@@ -1,7 +1,7 @@
---
id: 67f39babe1e2ec1fb6eea32a
title: Dictionaries and Sets Review
challengeType: 24
challengeType: 31
dashedName: review-dictionaries-and-sets
---

View File

@@ -1,7 +1,7 @@
---
id: 6723cc7a8e7aa3b9befd4bac
title: DOM Manipulation and Click Events with JavaScript Review
challengeType: 24
challengeType: 31
dashedName: review-dom-manipulation-and-click-events-with-javascript
---

View File

@@ -1,7 +1,7 @@
---
id: 67f39e2119042d2f2ca926ff
title: Dynamic Programming Review
challengeType: 24
challengeType: 31
dashedName: review-dynamic-programming
---

View File

@@ -1,7 +1,7 @@
---
id: 67f39bcb48373420f4f12d62
title: Error Handling Review
challengeType: 24
challengeType: 31
dashedName: review-error-handling
---

View File

@@ -1,7 +1,7 @@
---
id: 6723ce555ff2dfc0cc04b69a
title: Form Validation with JavaScript Review
challengeType: 24
challengeType: 31
dashedName: review-form-validation-with-javascript
---

View File

@@ -1,7 +1,7 @@
---
id: 6724e2dbf723fe1c8883cc69
title: Front End Libraries Review
challengeType: 24
challengeType: 31
dashedName: review-front-end-libraries
---

View File

@@ -1,7 +1,7 @@
---
id: 6724e4cfea0c4f2425a9d064
title: Git Review
challengeType: 24
challengeType: 31
dashedName: review-git
---

View File

@@ -1,7 +1,7 @@
---
id: 67f39e06b8a11b2de9ccd361
title: Graphs and Trees Review
challengeType: 24
challengeType: 31
dashedName: review-graph-and-trees
---

View File

@@ -1,7 +1,7 @@
---
id: 671a87a39b88245a579c2271
title: HTML Accessibility Review
challengeType: 24
challengeType: 31
dashedName: review-html-accessibility
---

View File

@@ -1,7 +1,7 @@
---
id: 671a872c17382a582e455c4c
title: HTML Tables and Forms Review
challengeType: 24
challengeType: 31
dashedName: review-html-tables-and-forms
---

View File

@@ -1,7 +1,7 @@
---
id: 671a883163d5ab5d47145880
title: HTML Review
challengeType: 24
challengeType: 31
dashedName: review-html
---

View File

@@ -1,7 +1,7 @@
---
id: 6723c66f623701a3cdf72130
title: JavaScript Arrays Review
challengeType: 24
challengeType: 31
dashedName: review-javascript-arrays
---

View File

@@ -1,7 +1,7 @@
---
id: 6723cf27c6e9a0c3f3041385
title: JavaScript Audio and Video Review
challengeType: 24
challengeType: 31
dashedName: review-javascript-audio-and-video
---

View File

@@ -1,7 +1,7 @@
---
id: 6723d13d756751caf871d59c
title: JavaScript Classes Review
challengeType: 24
challengeType: 31
dashedName: review-javascript-classes
---

View File

@@ -1,7 +1,7 @@
---
id: 6723c554025f449f4f39c3f5
title: JavaScript Comparisons and Conditionals Review
challengeType: 24
challengeType: 31
dashedName: review-javascript-comparisons-and-conditionals
---

View File

@@ -1,7 +1,7 @@
---
id: 6723ced0ba0b42c2a0ac14d2
title: JavaScript Dates Review
challengeType: 24
challengeType: 31
dashedName: review-javascript-dates
---

View File

@@ -1,7 +1,7 @@
---
id: 6723d2c154dd19d0025f7cd9
title: JavaScript Functional Programming Review
challengeType: 24
challengeType: 31
dashedName: review-javascript-functional-programming
---

View File

@@ -1,7 +1,7 @@
---
id: 6723c5b8601a40a100bb59c9
title: JavaScript Functions Review
challengeType: 24
challengeType: 31
dashedName: review-javascript-functions
---

View File

@@ -1,7 +1,7 @@
---
id: 6723ca166fe90eb0a3146848
title: JavaScript Fundamentals Review
challengeType: 24
challengeType: 31
dashedName: review-javascript-fundamentals
---

View File

@@ -1,7 +1,7 @@
---
id: 6723ca6c6db3deb21cb1bf19
title: JavaScript Higher Order Functions Review
challengeType: 24
challengeType: 31
dashedName: review-javascript-higher-order-functions
---

View File

@@ -1,7 +1,7 @@
---
id: 6723c837cd3276aa73e6da25
title: JavaScript Loops Review
challengeType: 24
challengeType: 31
dashedName: review-javascript-loops
---

View File

@@ -1,7 +1,7 @@
---
id: 6723d027b02e4cc6ee5944da
title: JavaScript Maps and Sets Review
challengeType: 24
challengeType: 31
dashedName: review-javascript-maps-and-sets
---

View File

@@ -1,7 +1,7 @@
---
id: 6723c463e51a2d9b747d7529
title: JavaScript Math Review
challengeType: 24
challengeType: 31
dashedName: review-javascript-math
---

View File

@@ -1,7 +1,7 @@
---
id: 6723c77d1a44b8a7599277dd
title: JavaScript Objects Review
challengeType: 24
challengeType: 31
dashedName: review-javascript-objects
---

View File

@@ -1,7 +1,7 @@
---
id: 6723cdfa4ae237bf6b7e32eb
title: JavaScript Regular Expressions Review
challengeType: 24
challengeType: 31
dashedName: review-javascript-regular-expressions
---

View File

@@ -1,7 +1,7 @@
---
id: 6723c1946e4cd7909a836bb4
title: JavaScript Strings Review
challengeType: 24
challengeType: 31
dashedName: review-javascript-strings
---

View File

@@ -1,7 +1,7 @@
---
id: 6723be264695fb7e619fe1fa
title: JavaScript Variables and Data Types Review
challengeType: 24
challengeType: 31
dashedName: review-javascript-variables-and-data-types
---

View File

@@ -1,7 +1,7 @@
---
id: 6723d3cfdd0717d3f1bf27e3
title: JavaScript Review
challengeType: 24
challengeType: 31
dashedName: review-javascript
---

View File

@@ -1,7 +1,7 @@
---
id: 683766860f71d4a96e429f3a
title: JavaScript and Accessibility Review
challengeType: 24
challengeType: 31
dashedName: review-js-a11y
---

View File

@@ -1,7 +1,7 @@
---
id: 6723d0ac516099c902394e8b
title: Local Storage and CRUD Review
challengeType: 24
challengeType: 31
dashedName: review-local-storage-and-crud
---

View File

@@ -1,7 +1,7 @@
---
id: 67f39b91583dec1e1eddbb9e
title: Loops and Sequences Review
challengeType: 24
challengeType: 31
dashedName: review-loops-and-sequences
---

View File

@@ -1,7 +1,7 @@
---
id: 67f39dac6c3fac29c3d54918
title: Object Oriented Programming Review
challengeType: 24
challengeType: 31
dashedName: review-object-oriented-programming
---

View File

@@ -1,7 +1,7 @@
---
id: 67f39b40deaec81a3e40e0c5
title: Python Basics Review
challengeType: 24
challengeType: 31
dashedName: review-python-basics
---

View File

@@ -1,7 +1,7 @@
---
id: 67f39e391c9b373069def02c
title: Python Review
challengeType: 24
challengeType: 31
dashedName: review-python
---

View File

@@ -1,7 +1,7 @@
---
id: 67487e141bb6a7140a352e12
title: React Basics Review
challengeType: 24
challengeType: 31
dashedName: review-react-basics
---

View File

@@ -1,7 +1,7 @@
---
id: 67c9e932c6c4234532d46394
title: React Forms, Data Fetching and Routing Review
challengeType: 24
challengeType: 31
dashedName: review-react-forms-data-fetching-and-routing
---

View File

@@ -1,7 +1,7 @@
---
id: 67c2bbd476f6e540b4c0b0d4
title: React State and Hooks Review
challengeType: 24
challengeType: 31
dashedName: review-react-state-and-hooks
---

View File

@@ -1,7 +1,7 @@
---
id: 6723d1f0568292cd394d6fb6
title: Recursion Review
challengeType: 24
challengeType: 31
dashedName: review-recursion
---

View File

@@ -1,7 +1,7 @@
---
id: 6724e3d6e1cb0c1fec3a8e4f
title: Relational Database Review
challengeType: 24
challengeType: 31
dashedName: review-relational-database
---

View File

@@ -1,7 +1,7 @@
---
id: 6724e5e321bce627736ea145
title: Relational Databases Review
challengeType: 24
challengeType: 31
dashedName: review-relational-databases
---

View File

@@ -1,7 +1,7 @@
---
id: 671a98927af7829722697dc2
title: Responsive Web Design Review
challengeType: 24
challengeType: 31
dashedName: review-responsive-web-design
---

View File

@@ -1,7 +1,7 @@
---
id: 67f39de5ff88202c94798189
title: Searching and Sorting Algorithms Review
challengeType: 24
challengeType: 31
dashedName: review-searching-and-sorting-algorithms
---

View File

@@ -1,7 +1,7 @@
---
id: 671a83934b61f64cefe87a61
title: Semantic HTML Review
challengeType: 24
challengeType: 31
dashedName: review-semantic-html
---

View File

@@ -1,7 +1,7 @@
---
id: 671a915858de057ad84c5dbd
title: Styling Forms Review
challengeType: 24
challengeType: 31
dashedName: review-styling-forms
---

View File

@@ -1,7 +1,7 @@
---
id: 6724e24864b0771a4c4c9dc9
title: Testing Review
challengeType: 24
challengeType: 31
dashedName: review-testing
---

View File

@@ -1,7 +1,7 @@
---
id: 6724e296dceca21b82426229
title: Typescript Review
challengeType: 24
challengeType: 31
dashedName: review-typescript
---

View File

@@ -1,7 +1,7 @@
---
id: 6724e18296fa40173cc2437c
title: Web Performance Review
challengeType: 24
challengeType: 31
dashedName: review-web-performance
---

View File

@@ -158,7 +158,7 @@ const schema = Joi.object().keys({
otherwise: Joi.optional()
}),
certification: Joi.string().regex(slugWithSlashRE),
challengeType: Joi.number().min(0).max(30).required(),
challengeType: Joi.number().min(0).max(31).required(),
checksum: Joi.number(),
// TODO: require this only for normal challenges, not certs
dashedName: Joi.string().regex(slugRE),

View File

@@ -30,6 +30,7 @@ const pyLab = 27;
const dailyChallengeJs = 28;
const dailyChallengePy = 29;
const examDownload = 30;
const review = 31;
export const challengeTypes = {
html,
@@ -63,7 +64,8 @@ export const challengeTypes = {
pyLab,
dailyChallengeJs,
dailyChallengePy,
examDownload
examDownload,
review
};
export const hasNoSolution = (challengeType: number): boolean => {
@@ -87,7 +89,8 @@ export const hasNoSolution = (challengeType: number): boolean => {
dialogue,
fillInTheBlank,
generic,
examDownload
examDownload,
review
];
return noSolutions.includes(challengeType);
@@ -124,7 +127,8 @@ export const viewTypes = {
[pyLab]: 'classic',
[dailyChallengeJs]: 'classic',
[dailyChallengePy]: 'classic',
[examDownload]: 'examDownload'
[examDownload]: 'examDownload',
[review]: 'generic'
};
// determine the type of submit function to use for the challenge on completion
@@ -162,7 +166,8 @@ export const submitTypes = {
[pyLab]: 'tests',
[dailyChallengeJs]: 'tests',
[dailyChallengePy]: 'tests',
[examDownload]: 'examDownload'
[examDownload]: 'examDownload',
[review]: 'tests'
};
export const canSaveToDB = (challengeType: number): boolean =>