chore: import upstream snapshot with attribution
i18n - Build Validation / Validate i18n Builds (24) (push) Has been cancelled
CI - Node.js / Lint (24) (push) Has been cancelled
CI - Node.js / Build (24) (push) Has been cancelled
CI - Node.js / Test (24) (push) Has been cancelled
CI - Node.js / Test - Upcoming Changes (24) (push) Has been cancelled
CI - Node.js / Test - i18n (italian, 24) (push) Has been cancelled
CI - Node.js / Test - i18n (portuguese, 24) (push) Has been cancelled
CD - Docker - GHCR Images / Build and Push Images (push) Has been cancelled

This commit is contained in:
wehub-resource-sync
2026-07-13 11:55:53 +08:00
commit dde272c4b8
19405 changed files with 2730632 additions and 0 deletions
+2
View File
@@ -0,0 +1,2 @@
export const prodAnalyticsId = 'GTM-57R6KJM';
export const devAnalyticsId = 'GTM-WSS47LM';
@@ -0,0 +1,77 @@
import path from 'node:path';
import fs from 'node:fs';
import { describe, test, expect } from 'vitest';
import { getContentDir } from '@freecodecamp/curriculum/file-handler';
import { buildCertification } from '@freecodecamp/curriculum/build-certification';
import { allCerts } from './cert-and-project-map';
describe('certifications', () => {
const certificationsDir = path.resolve(
getContentDir('english'),
'certifications'
);
const certificationFiles = fs.readdirSync(certificationsDir);
certificationFiles.forEach(filename => {
test(`${filename} should have matching items in cert-and-project-map`, () => {
const filePath = path.join(certificationsDir, filename);
const result = buildCertification(filePath);
const certData = result.challenges[0];
const certTests = certData.tests;
const matchingCert = allCerts.find(cert => cert.id === certData.id);
expect(
matchingCert,
`Cert ID ${certData.id} not found in allCerts.`
).toBeDefined();
expect(
matchingCert,
`Matching cert has no 'projects' property`
).toHaveProperty('projects');
// skip legacy-full-stack as it has no projects
if (filename === 'legacy-full-stack.yml') {
return;
}
expect(
Array.isArray(matchingCert?.projects),
`Matching cert 'projects' is not an array`
).toBe(true);
const certProjects = matchingCert?.projects;
expect(
certProjects?.length,
`Project count mismatch: allCerts has ${certProjects?.length} projects, YAML has ${certTests.length} tests`
).toBe(certTests.length);
certTests.forEach((test, i) => {
expect(
test,
`Test at index ${i} in missing id property`
).toHaveProperty('id');
expect(
test,
`Test at index ${i} missing title property`
).toHaveProperty('title');
const matchingProject = certProjects?.[i];
expect(
matchingProject,
`No project found at index ${i} for test ${test.id}`
).toBeDefined();
expect(
matchingProject?.id,
`Project ID mismatch at index ${i}: allCerts has "${matchingProject?.id}", YAML has "${test.id}"`
).toBe(test.id);
});
});
});
});
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,130 @@
{
"aa-test": {
"defaultValue": false
},
"aa-test-in-component": {
"defaultValue": false
},
"rdb-codespaces-instructions": {
"defaultValue": true
},
"rdb-local-instructions": {
"defaultValue": true
},
"rdb-ona-instructions": {
"defaultValue": true
},
"landing-top-skill-focused": {
"defaultValue": false,
"rules": [
{
"coverage": 1,
"hashAttribute": "id",
"seed": "landing-top-skill-focused",
"hashVersion": 2,
"variations": [false, true],
"weights": [0.5, 0.5],
"key": "landing-top-skill-focused",
"meta": [
{
"key": "0",
"name": "Control"
},
{
"key": "1",
"name": "Variation 1"
}
],
"phase": "0",
"name": "tests the conversion rate of the new design comparing to the old one"
}
]
},
"replace-20-with-25": {
"defaultValue": false,
"rules": [
{
"coverage": 1,
"hashAttribute": "id",
"seed": "replace-20-with-25",
"hashVersion": 2,
"variations": [false, true],
"weights": [0.5, 0.5],
"key": "replace-20-with-25",
"meta": [
{
"key": "0",
"name": "Control"
},
{
"key": "1",
"name": "Variation 1"
}
],
"phase": "0",
"name": "stg replace 20 with 25"
}
]
},
"show-modal-randomly": {
"defaultValue": false,
"rules": [
{
"coverage": 1,
"hashAttribute": "id",
"seed": "show-modal-randomly",
"hashVersion": 2,
"variations": [false, true],
"weights": [0.5, 0.5],
"key": "show-modal-randomly",
"meta": [
{
"key": "0",
"name": "Control"
},
{
"key": "1",
"name": "Variation 1"
}
],
"phase": "0",
"name": "stg show modal randomly"
}
]
},
"landing-two-button-cta": {
"defaultValue": false,
"rules": [
{
"coverage": 1,
"hashAttribute": "id",
"seed": "landing-two-button-cta",
"hashVersion": 2,
"variations": [false, true],
"weights": [0.5, 0.5],
"key": "landing-two-button-cta",
"meta": [
{
"key": "0",
"name": "Control"
},
{
"key": "1",
"name": "Variation 1"
}
],
"phase": "0",
"name": "prod-landing-two-button-cta"
}
]
},
"classroom-mode": {
"defaultValue": false
},
"disabled_blocks": {
"defaultValue": []
},
"show-socrates": {
"defaultValue": false
}
}
+5
View File
@@ -0,0 +1,5 @@
export const MAX_MOBILE_WIDTH = 767;
export const EX_SMALL_VIEWPORT_HEIGHT = 300;
export const TOOL_PANEL_HEIGHT = 37;
export const SEARCH_EXPOSED_WIDTH = 980;
export const GITHUB_LOCATION = 'https://github.com/freeCodeCamp';