Skip to content

Commit 13f6e08

Browse files
Merge pull request #87 from topcoder-platform/dev
TCA-464 TCA New Courses Release -> master
2 parents b673682 + a7d83df commit 13f6e08

File tree

1,665 files changed

+63694
-11977
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

1,665 files changed

+63694
-11977
lines changed

.github/workflows/codeql-analysis.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@ jobs:
3232
- name: Checkout repository
3333
uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b # tag=v3
3434
- name: Setup CodeQL
35-
uses: github/codeql-action/init@d5cec099b513fccc2cfcc9247113ecc9edbdacc5 # tag=v1
35+
uses: github/codeql-action/init@83007bbc17d874e3f1654bfaf9367629f7fdcac7 # tag=v1
3636
with:
3737
languages: ${{ matrix.language }}
3838
- name: Perform Analysis
39-
uses: github/codeql-action/analyze@d5cec099b513fccc2cfcc9247113ecc9edbdacc5 # tag=v1
39+
uses: github/codeql-action/analyze@83007bbc17d874e3f1654bfaf9367629f7fdcac7 # tag=v1

.github/workflows/codesee-diagram.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ jobs:
3030
uses: Codesee-io/codesee-detect-languages-action@latest
3131

3232
- name: Configure JDK 16
33-
uses: actions/setup-java@2c7a4878f5d120bd643426d54ae1209b29cc01a3 # tag=v3
33+
uses: actions/setup-java@d854b6da19cdadd9a010605529e522c2393ebd38 # tag=v3
3434
if: ${{ fromJSON(steps.detect-languages.outputs.languages).java }}
3535
with:
3636
java-version: '16'

.github/workflows/labeler.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ jobs:
1414
pull-requests: write
1515
runs-on: ubuntu-20.04
1616
steps:
17-
- uses: actions/labeler@9fd24f1f9d6ceb64ba34d181b329ee72f99978a0 # tag=v4
17+
- uses: actions/labeler@2f7477e3004bdfe4bba501d76fae0d81f6eac775 # tag=v4
1818
with:
1919
repo-token: '${{ secrets.GITHUB_TOKEN }}'
2020
sync-labels: true

.github/workflows/node.js-tests-upcoming.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
name: CI - Node.js Test Upcoming
2+
env:
3+
NODE_OPTIONS: '--max_old_space_size=6144'
24
on:
35
push:
46
branches:

.github/workflows/node.js-tests.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
name: CI - Node.js Test Current
2+
env:
3+
NODE_OPTIONS: '--max_old_space_size=6144'
24
on:
35
push:
46
branches-ignore:

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ Once you have earned the Responsive Web Design, Algorithms and Data Structures,
146146

147147
#### Legacy Certifications
148148

149-
We also have 4 legacy certifications dating back to our 2015 curriculum, which is still available. All of the required projects for these legacy certifications will remain available on freeCodeCamp.org.
149+
We also have 4 legacy certifications dating back to our 2015 curriculum, which are still available. All of the required projects for these legacy certifications will remain available on freeCodeCamp.org.
150150

151151
- Legacy Front End Development Certification
152152
- Legacy Data Visualization Certification
@@ -161,7 +161,7 @@ Our community also has:
161161

162162
- A [forum](https://forum.freecodecamp.org) where you can usually get programming help or project feedback within hours.
163163
- A [YouTube channel](https://youtube.com/freecodecamp) with free courses on Python, SQL, Android, and a wide variety of other technologies.
164-
- A [technical publication](https://www.freecodecamp.org/news) with thousands of programming tutorials and articles about math and computer science.
164+
- A [technical publication](https://www.freecodecamp.org/news) with thousands of programming tutorials and articles about mathematics and computer science.
165165
- A [Discord server](https://discord.gg/Z7Fm39aNtZ) where you can hang out and talk with developers and people who are learning to code.
166166

167167
> #### [Join the community here](https://www.freecodecamp.org/signin).

api-server/src/server/boot/challenge.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -260,14 +260,17 @@ export function isValidChallengeCompletion(req, res, next) {
260260

261261
if (!ObjectID.isValid(id)) {
262262
log('isObjectId', id, ObjectID.isValid(id));
263+
console.debug('isObjectId', id, ObjectID.isValid(id));
263264
return res.status(403).json(isValidChallengeCompletionErrorMsg);
264265
}
265266
if ('challengeType' in req.body && !isNumeric(String(challengeType))) {
266267
log('challengeType', challengeType, isNumeric(challengeType));
268+
console.debug('challengeType', challengeType, isNumeric(challengeType));
267269
return res.status(403).json(isValidChallengeCompletionErrorMsg);
268270
}
269271
if ('solution' in req.body && !isURL(solution)) {
270-
log('isObjectId', id, ObjectID.isValid(id));
272+
log('solution', solution, !isURL(solution));
273+
console.debug('solution', solution, !isURL(solution));
271274
return res.status(403).json(isValidChallengeCompletionErrorMsg);
272275
}
273276
return next();

api-server/src/server/middlewares/sessions.js

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,6 @@ const MongoStore = MongoStoreFactory(session);
55
const sessionSecret = process.env.SESSION_SECRET;
66
const url = process.env.MONGODB || process.env.MONGOHQ_URL;
77

8-
console.log('session DB url', url);
9-
108
export default function sessionsMiddleware() {
119
return session({
1210
// 900 day session cookie

client/i18n/locales/chinese-traditional/translations.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,7 @@
113113
"claim-legacy": "當你獲得下列 freeCodeCamp 認證之後,你可以申請 {{cert}}:",
114114
"for": "{{username}} 賬號設置",
115115
"sound-mode": "爲整個網站添加做令人愉快的吉他原聲音樂。在編輯器輸入、完成挑戰、申請認證等時刻,您將獲得音樂反饋。",
116+
"sound-volume": "Campfire Volume:",
116117
"username": {
117118
"contains invalid characters": "用戶名 \"{{username}}\" 含有無效字符",
118119
"is too short": "用戶名 \"{{username}}\" 太短",
@@ -451,6 +452,7 @@
451452
"change-theme": "登錄以更改主題。",
452453
"translation-pending": "幫我們翻譯",
453454
"certification-project": "認證項目",
455+
"iframe-preview": "{{title}} preview",
454456
"iframe-alert": "通常,此鏈接會將你帶到另一個網站!一切正常,這個鏈接指向:{{externalLink}}。",
455457
"document-notfound": "找不到文件"
456458
},
@@ -487,6 +489,12 @@
487489
"breadcrumb-nav": "麪包屑導航",
488490
"submit": "按下 Ctrl + Enter 鍵提交。",
489491
"running-tests": "正在運行測試",
492+
"hide-preview": "Hide the preview",
493+
"move-preview-to-new-window": "Move the preview to a new window and focus it",
494+
"move-preview-to-main-window": "Move the preview to this window and close the external preview window",
495+
"close-external-preview-window": "Close the external preview window",
496+
"show-preview": "Show the preview in this window",
497+
"open-preview-in-new-window": "Open the preview in a new window and focus it",
490498
"step": "步驟",
491499
"steps": "步驟",
492500
"steps-for": "{{blockTitle}} 的步驟"

client/i18n/locales/chinese/translations.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,7 @@
113113
"claim-legacy": "当你获得下列 freeCodeCamp 认证之后,你可以申请 {{cert}}:",
114114
"for": "{{username}} 账号设置",
115115
"sound-mode": "为整个网站添加做令人愉快的吉他原声音乐。在编辑器输入、完成挑战、申请认证等时刻,您将获得音乐反馈。",
116+
"sound-volume": "Campfire Volume:",
116117
"username": {
117118
"contains invalid characters": "用户名 \"{{username}}\" 含有无效字符",
118119
"is too short": "用户名 \"{{username}}\" 太短",
@@ -451,6 +452,7 @@
451452
"change-theme": "登录以更改主题。",
452453
"translation-pending": "帮我们翻译",
453454
"certification-project": "认证项目",
455+
"iframe-preview": "{{title}} preview",
454456
"iframe-alert": "通常,此链接会将你带到另一个网站!一切正常,这个链接指向:{{externalLink}}。",
455457
"document-notfound": "找不到文件"
456458
},
@@ -487,6 +489,12 @@
487489
"breadcrumb-nav": "面包屑导航",
488490
"submit": "按下 Ctrl + Enter 键提交。",
489491
"running-tests": "正在运行测试",
492+
"hide-preview": "Hide the preview",
493+
"move-preview-to-new-window": "Move the preview to a new window and focus it",
494+
"move-preview-to-main-window": "Move the preview to this window and close the external preview window",
495+
"close-external-preview-window": "Close the external preview window",
496+
"show-preview": "Show the preview in this window",
497+
"open-preview-in-new-window": "Open the preview in a new window and focus it",
490498
"step": "步骤",
491499
"steps": "步骤",
492500
"steps-for": "{{blockTitle}} 的步骤"

client/i18n/locales/english/translations.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@
5050
"reset-lesson": "Reset this lesson",
5151
"run": "Run",
5252
"run-test": "Run the Tests (Ctrl + Enter)",
53+
"run-test-2": "Run the Tests",
5354
"check-code": "Check Your Code (Ctrl + Enter)",
5455
"check-code-2": "Check Your Code",
5556
"reset": "Reset",
@@ -113,6 +114,7 @@
113114
"claim-legacy": "Once you've earned the following freeCodeCamp certifications, you'll be able to claim the {{cert}}:",
114115
"for": "Account Settings for {{username}}",
115116
"sound-mode": "This adds the pleasant sound of acoustic guitar throughout the website. You'll get musical feedback as you type in the editor, complete challenges, claim certifications, and more.",
117+
"sound-volume": "Campfire Volume:",
116118
"username": {
117119
"contains invalid characters": "Username \"{{username}}\" contains invalid characters",
118120
"is too short": "Username \"{{username}}\" is too short",
@@ -488,6 +490,12 @@
488490
"breadcrumb-nav": "breadcrumb",
489491
"submit": "Use Ctrl + Enter to submit.",
490492
"running-tests": "Running tests",
493+
"hide-preview": "Hide the preview",
494+
"move-preview-to-new-window": "Move the preview to a new window and focus it",
495+
"move-preview-to-main-window": "Move the preview to this window and close the external preview window",
496+
"close-external-preview-window": "Close the external preview window",
497+
"show-preview": "Show the preview in this window",
498+
"open-preview-in-new-window": "Open the preview in a new window and focus it",
491499
"step": "Step",
492500
"steps": "Steps",
493501
"steps-for": "Steps for {{blockTitle}}"

client/i18n/locales/espanol/intro.json

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -70,8 +70,8 @@
7070
"title": "(Nuevo) Diseño Web Responsivo",
7171
"intro": [
7272
"En esta certificación de Diseño Web Responsivo, aprenderás los lenguajes que los desarrolladores usan para construir páginas web: HTML (Lenguaje de Marcado de Hipertexto) para el contenido, y CSS (hojas de estilo en cascada) para el diseño.",
73-
"First, you'll build a cat photo app to learn the basics of HTML and CSS. Later, you'll learn modern techniques like CSS variables by building a penguin, and best practices for accessibility by building a quiz site.",
74-
"Finally, you'll learn how to make webpages that respond to different screen sizes by building a photo gallery with Flexbox, and a magazine article layout with CSS Grid."
73+
"Primero, crearás una aplicación de fotos de gatos para aprender los conceptos básicos de HTML y CSS. Más adelante, aprenderás técnicas modernas como variables CSS, mediante la construcción de un pingüino, y las mejores prácticas para la accesibilidad mediante la construcción de un sitio de cuestionarios.",
74+
"Por último, aprenderás cómo hacer páginas web que respondan a diferentes tamaños de pantalla, mediante la construcción de una galería de fotos con Flexbox, y un diseño de artículos de revista con CSS Grid."
7575
],
7676
"note": "Nota: Algunas extensiones del navegador, como bloqueadores de anuncios o extensiones de modo oscuro pueden interferir con las pruebas. Si tienes algun problema, te recomendamos deshabilitar las extensiones que modifiquen el contenido de la página, mientras tomas el curso.",
7777
"blocks": {
@@ -308,7 +308,7 @@
308308
"note": "",
309309
"blocks": {
310310
"build-a-caesars-cipher-project": {
311-
"title": "Build a Caesars Cipher Project",
311+
"title": "Construye un proyecto de cifrado cesar",
312312
"intro": [
313313
"",
314314
""
@@ -606,8 +606,8 @@
606606
"mongodb-and-mongoose": {
607607
"title": "MongoDB y Mongoose",
608608
"intro": [
609-
"MongoDB is a database application that stores JSON documents (or records) that you can use in your application. Unlike SQL, another type of database, MongoDB is a non-relational or \"NoSQL\" database. This means MongoDB stores all associated data within one record, instead of storing it across many preset tables as in a SQL database.",
610-
"Mongoose is a popular npm package for interacting with MongoDB. With Mongoose, you can use plain JavaScript objects instead of JSON, which makes it easier to work with MongoDB. Also, it allows you to create blueprints for your documents called schemas, so you don't accidentally save the wrong type of data and cause bugs later.",
609+
"MongoDB es una aplicación de base de datos que almacena documentos JSON (o registros) que puede usar en su aplicación. A diferencia de SQL, otro tipo de base de datos, MongoDB es una base de datos no relacional o \"NoSQL\". Esto significa que MongoDB almacena todos los datos asociados dentro de un registro, en lugar de almacenarlos en muchas tablas preestablecidas como en una base de datos SQL.",
610+
"Mongoose es un paquete npm popular para interactuar con MongoDB. Con Mongoose, puede usar objetos de JavaScript sin formato en lugar de JSON, lo que facilita el trabajo con MongoDB. Además, le permite crear planos para sus documentos llamados esquemas, para que no guarde accidentalmente el tipo de datos incorrecto y provoque errores más adelante.",
611611
"En los cursos de MongoDB y Mongoose, aprenderás los fundamentos para trabajar con datos persistentes, incluyendo cómo configurar un modelo, guardar, eliminar y encontrar documentos en la base de datos."
612612
]
613613
},
@@ -805,7 +805,7 @@
805805
"intro": [
806806
"Sube tu nivel de habilidad de resolución creativa de problemas con estas tareas de programación gratis de la clásica librería de Rosetta Code.",
807807
"Estos desafíos pueden resultar difíciles, pero empujarán tu lógica de algoritmos a nuevas alturas.",
808-
"<a href='https://rosettacode.org/wiki/Rosetta_Code' target='_blank' rel='noopener noreferrer nofollow'>Attribute: Rosetta Code</a>"
808+
"<a href='https://rosettacode.org/wiki/Rosetta_Code' target='_blank' rel='noopener noreferrer nofollow'>Atributo: Código Rosetta</a>"
809809
]
810810
},
811811
"project-euler": {

client/i18n/locales/espanol/translations.json

Lines changed: 32 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@
5151
"run": "Ejecutar",
5252
"run-test": "Ejecutar las Pruebas (Ctrl + Entrar)",
5353
"check-code": "Comprueba tu código (Ctrl + Enter)",
54-
"check-code-2": "Check Your Code",
54+
"check-code-2": "Comprueba tu código",
5555
"reset": "Restablecer",
5656
"reset-code": "Restablecer todo el código",
5757
"help": "Ayuda",
@@ -74,8 +74,8 @@
7474
"click-start-project": "Comienza el proyecto",
7575
"change-language": "Cambiar Idioma",
7676
"cancel-change": "Cancelar Cambio",
77-
"resume-project": "Resume project",
78-
"start-project": "Start project"
77+
"resume-project": "Reanudar proyecto",
78+
"start-project": "Iniciar proyecto"
7979
},
8080
"landing": {
8181
"big-heading-1": "Aprende a programar gratis.",
@@ -113,6 +113,7 @@
113113
"claim-legacy": "Una vez que hayas obtenido las siguientes certificaciones de FreeCodeCamp, podrás reclamar la {{cert}}:",
114114
"for": "Ajustes de cuenta de {{username}}",
115115
"sound-mode": "Esto agrega un placentero sonido de guitarra acústica en todo el sitio web. Obtendrás reacciones musicales a medida que escribas en el editor, completes desafíos, obtengas certificados y mucho más.",
116+
"sound-volume": "Campfire Volume:",
116117
"username": {
117118
"contains invalid characters": "El nombre de usuario \"{{username}}\" contiene caracteres inválidos",
118119
"is too short": "El nombre de usuario \"{{username}}\" es demasiado corto",
@@ -149,7 +150,7 @@
149150
"my-donations": "Mis donaciones",
150151
"night-mode": "Modo nocturno",
151152
"sound-mode": "Modo de fogata",
152-
"keyboard-shortcuts": "Enable Keyboard Shortcuts"
153+
"keyboard-shortcuts": "Habilitar atajos de teclado"
153154
},
154155
"headings": {
155156
"certs": "Certificaciones",
@@ -275,7 +276,7 @@
275276
"solution-link": "Enlace a la solución",
276277
"github-link": "Enlace de GitHub",
277278
"submit-and-go": "Enviar y pasar a mi siguiente desafío",
278-
"congratulations": "Congratulations, your code passes. Submit your code to continue.",
279+
"congratulations": "Felicidades, tu código ha sido aprobado. Envía tu código para continuar.",
279280
"i-completed": "He completado este desafío",
280281
"test-output": "El resultado de tu prueba irá aquí",
281282
"running-tests": "// ejecutando pruebas",
@@ -286,14 +287,14 @@
286287
"percent-complete": "{{percent}}% completo",
287288
"tried-rsa": "Si ya has probado el método <0>Leer-Buscar-Preguntar</0>, entonces puedes pedir ayuda en el foro de freeCodeCamp.",
288289
"rsa": "Leer, buscar, preguntar",
289-
"rsa-forum": "<strong>Before making a new post</strong> please see if your question has <0>already been answered on the forum</0>.",
290+
"rsa-forum": "<strong>Antes de hacer una nueva publicación</strong> por favor, comprueba si tu pregunta ya ha sido <0>respondida en el foro</0>.",
290291
"reset": "¿Restablecer esta lección?",
291292
"reset-warn": "¿Estás seguro de que deseas restablecer esta lección? Los editores y las pruebas se restablecerán.",
292293
"reset-warn-2": "Esto no se puede deshacer",
293294
"scrimba-tip": "Sugerencia: Si el mini-navegador cubre el código, haz clic y arrastra para moverlo. Además, siéntete libre de detener y editar el código en el video en cualquier momento.",
294295
"chal-preview": "Vista previa del desafío",
295296
"cert-map-estimates": {
296-
"certs": "{{title}} Certification"
297+
"certs": "Certificación {{title}}"
297298
},
298299
"editor-tabs": {
299300
"info": "Info",
@@ -324,7 +325,7 @@
324325
"sorry-getting-there": "Lo sentimos, tu código no pasa. Casi lo consigues.",
325326
"sorry-hang-in-there": "Lo sentimos, su código no pasa. Aguanta ahí.",
326327
"sorry-dont-giveup": "Lo sentimos, su código no pasa. No te rindas.",
327-
"challenges-completed": "{{completedCount}} of {{totalChallenges}} challenges completed"
328+
"challenges-completed": "{{completedCount}} de {{totalChallenges}} desafíos completados"
328329
},
329330
"donate": {
330331
"title": "Apoya a nuestra organización sin fines de lucro",
@@ -451,8 +452,9 @@
451452
"change-theme": "Entra para cambiar el tema.",
452453
"translation-pending": "Ayúdanos a traducir",
453454
"certification-project": "Proyecto de certificación",
454-
"iframe-alert": "Normally this link would bring you to another website! It works. This is a link to: {{externalLink}}",
455-
"document-notfound": "document not found"
455+
"iframe-preview": "{{title}} Vista previa",
456+
"iframe-alert": "¡Normalmente este link te llevaría a otro sitio web! Funciona. Este es un enlace a: {{externalLink}}",
457+
"document-notfound": "documento no encontrado"
456458
},
457459
"icons": {
458460
"gold-cup": "Copa de Oro",
@@ -461,9 +463,9 @@
461463
"donate": "Dona con PayPal",
462464
"fail": "Prueba fallida",
463465
"not-passed": "Sin aprobar",
464-
"waiting": "Waiting",
466+
"waiting": "Esperando",
465467
"passed": "Aprobado",
466-
"failed": "Failed",
468+
"failed": "Falló",
467469
"hint": "Sugerencia",
468470
"heart": "Corazón",
469471
"initial": "Inicial",
@@ -487,9 +489,15 @@
487489
"breadcrumb-nav": "migas de pan",
488490
"submit": "Utiliza Ctrl + Enter para enviar.",
489491
"running-tests": "Ejecutando pruebas",
490-
"step": "Step",
491-
"steps": "Steps",
492-
"steps-for": "Steps for {{blockTitle}}"
492+
"hide-preview": "Ocultar la vista previa",
493+
"move-preview-to-new-window": "Mover la vista previa a una nueva ventana y enfocarla",
494+
"move-preview-to-main-window": "Mueve la vista previa a esta ventana y cierra la ventana de vista previa externa",
495+
"close-external-preview-window": "Cerrar la ventana de vista previa externa",
496+
"show-preview": "Mostrar la vista previa en esta ventana",
497+
"open-preview-in-new-window": "Abrir la vista previa en una nueva ventana y enfocarla",
498+
"step": "Paso",
499+
"steps": "Pasos",
500+
"steps-for": "Pasos para {{blockTitle}}"
493501
},
494502
"flash": {
495503
"honest-first": "Para reclamar una certificación, primero debes aceptar nuestra política de honestidad académica.",
@@ -697,14 +705,14 @@
697705
"yes-please": "Si por favor, deseo borrar mi token"
698706
},
699707
"shortcuts": {
700-
"title": "Keyboard shortcuts",
701-
"table-header-action": "Action",
702-
"table-header-key": "Key(s)",
703-
"navigation-mode": "Navigation Mode",
704-
"execute-challenge": "Execute Challenge",
705-
"focus-editor": "Focus Editor",
706-
"focus-instructions-panel": "Focus Instructions Panel",
707-
"navigate-previous": "Navigate Previous Exercise",
708-
"navigate-next": "Navigate Next Exercise"
708+
"title": "Atajos de teclado",
709+
"table-header-action": "Acción",
710+
"table-header-key": "Clave(s)",
711+
"navigation-mode": "Modo de Navegación",
712+
"execute-challenge": "Ejecutar desafío",
713+
"focus-editor": "Editor de enfoque",
714+
"focus-instructions-panel": "Panel de Instrucciones de enfoque",
715+
"navigate-previous": "Navegar al ejercicio anterior",
716+
"navigate-next": "Navegar siguiente ejercicio"
709717
}
710718
}

0 commit comments

Comments
 (0)