Releases: Laboratoria/curriculum-parser
v6.0.0
Highlights
⚠️ BREAKING CHANGE: project.learningObjectives
pasa de arreglo de strings a arreglo de objetos
Propiedad learningObjectives
en output JSON al parsear proyectos pasa de ser un arreglo de strings a ser un arreglo de objetos donde cada objeto tiene una propiedad id
con el mismo string que antes, además de opcionalmente incluir las propiedades optional
(OAs opcionales) y exclude
(para excluir OAs generales en variantes).
{
"learningObjectives": [
"html",
"css",
"dom"
],
}
{
"learningObjectives": [
{ "id": "html" },
{ "id": "css" },
{ "id": "dom" }
]
}
☮️ Compatible con archivos project.yml
de versiones anteriores
En los project.yml
ahora los objetivos de aprendizaje se pueden expresar a la antigua como strings (esto hace que los project.yml
antiguos sean compatibles) o como objetos (y así acceder a la nueva funcionalidad).
➕➕ Agrega project.variants
En los project.yml
, la propiedad opcional variants
puede ser una lista (array) de variantes, donde cada una se define como un objeto con las propiedades name
y learningObjectives
. De esta manera, cada variante puede agregar o excluir objetivos de aprendizaje específicamente para esa versión. La proppiedad learningObjectives
de cada variante expresa las diferencias con respecto a los objetivos de aprendizaje listados de forma general en el proyecto. Consideremos este project.yml
:
tracks:
- web-dev
learningObjectives:
- html
- css
- dom
variants:
- name: vanilla
- name: react
learningObjectives:
- react
- id: dom
exclude: true
- name: angular
learningObjectives:
- angular
- id: object-oriented-programming
optional: true
En este caso, este proyecto estaría ofreciendo 3
variantes (vanilla
, react
y angular
). Las variantes por defecto heredan los objetivos de aprendizaje generales del proyecto (html
, css
y dom
en este caso), y opcionalmente pueden agregar objetivos específicos de la variante (en la variante react
agregamos los objetivos de react
, y en la de angular
agregamos los objetivos de angular
y object-oriented-programming
como opcional) e incluso excluir objetivos heredados (en el ejemplo la variante react
está diciendo que en esa variante no se deben incluir los objetivos de dom
).
➕➕ Agrega project.tags
featured
beta
deprecated
hidden
Changelog
v5.3.0
✨ Highlights
➕➕ Topic
, Project
, Challenge
multi-tracks
Soluciona el problema de que antes no se podía asignar un tópico, proyecto o challenge a más de un track, anteriormente para replicar un tópico en distintos tracks debía duplicarse el tópico, lo que era ineficiente. Desde ahora cualquier tópico, proyecto o challenge puede pertenecer a más de un track.
A partir de este release, ahora puede agregarse una lista de tracks
en yml a Proyectos, Tópicos y Challenges, que incluya más de un track
, por ejemplo un README de un tópico puede incluir en su sección de metadata:
tracks:
- web-dev
- ux
- data
Changelog
- fb3f8f3 refactor(cd): Deletes non necessary dependency install on publish
- 9a79d41 fix(cicd): Adds NPM registry-url
- 00d6b8e feat(cicd): Adds github actions to publish to NPM
- af002bc Update README.md
- 7976b43 fix(tests): Adds new test cases for parseTracks function in common
- 8553da5 refactor(Common): Refactors the new parseTracks function as per code review. It maintains backwards compatibility with current workflows
- 47613da refactor(Common): Added validateTracks() in Common module, used in Topic, Project and Challenge modules
- 7182029 refactor(lib): Refactors Topic, Project and Challenge to use yml array format from meta object instead of csv
- 39d63c9 refactor(Topic): Changes error message when no tracks are found
- 22b400c feat(Challenge): Adds 'tracks' attribute to Challenge object
- 16b8cf0 feat(Project): Adds 'tracks' attribute to Project object
- 6a48057 feat(Topic): Adds 'tracks' attribute to Topic object
v5.2.0
✨ Highlights
➕➕ Agrega soporte para portugués en challenges de tipo (env) form
Changelog
v5.1.0
✨ Highlights
Agrega soporte para string multilinea en challenges del tipo form
Changelog
v5.0.0
🌟 Highlights
➕➕ Nueva estructura de proyectos y tópicos #52
En este hito, realizamos cambios en el analizador para crear una nueva estructura de proyectos y tópicos. El cambio más notable en esta estructura es que ahora solo hay un archivo JSON que representa un proyecto o tópico, el cual contiene las versiones en diferentes idiomas, en lugar de tener una representación "distinta" por cada idioma.
Por ejemplo, la propiedad intl
tiene traducciones en español (es) y portugués (pt).
{
"slug": "burger-queen-api-client",
"repo": "Laboratoria/bootcamp",
"path": "projects/04-burger-queen-api-client",
"version": "6.3.0",
"parserVersion": "5.0.0-beta.0",
...
"track": "web-dev",
"learningObjectives": [...],
"intl": {
"es": {
"title": "Burger Queen (API Client)",
"summary": "<p>Un pequeño restaurante de hamburguesas, que está creciendo, necesita un\nsistema a través del ..."
},
"pt": {
"title": "Burger Queen (API Client)",
"summary": "<p>Um pequeno restaurante de hambúrgueres, que está crescendo, necessita uma\ninterface em que se possa realizar pedidos utilizando um <em>tablet</em>....</p>"
}
},
➕➕ Agrega soporte básico para entorno (env
) de challenge tipo form
Estos cambios dan soporte al 1er reto de admisiones del nuevo bootcamp de análisis de datos.
➖➖ Quitamos type "quiz" de las “partes” de los tópicos
➕➕ Exportamos transformLearningObjectives para usar en curricula
🔧📦 Convertimos el app para usar ESM #52
También en este release , reemplazamos el uso de CommonJS modules por ECMAScript modules (ESM).
Entonces ahora usamos import/export
.
Milestones
Changelog
- 969b531 chore(pkg): Actualiza dependencias (@lupomontero)
- 3411310 feat(challenge): Cambia formato de solución de form a markdown (@lupomontero)
- 7a254b5 chore(pkg): Actualiza dependencias (@lupomontero)
- 05a1a7c test(challenge): Agrega prueba para env form y agrega fallback a metaFromFile al parsear por locales (@lupomontero)
- 289de2b fix(challenge): Permite etiquetas solution con atributos (@lupomontero)
- b67ff38 fix(challenge): Corrige cómputo de sección de preguntas en entorno form (@lupomontero)
- fb60b9e test(challenge): Quita yml innecesario (wip) (@lupomontero)
- 7912589 feat(challenges): Agrega soporte para nuevo env form (@lupomontero)
- 93e0d89 test(config): Excluye helpers (@lupomontero)
- ff63205 chore(pkg): BREAKING CHANGE - Actualiza deps y quita soporte ara Node < 16 (@lupomontero)
- fa5e799 doc(examples): Simplifica y corrige ejemplos (@lupomontero)
- 8b331d2 test(common): Quita test duplicado identificado por @unjust (@lupomontero)
- da186e1 test(project): Quita handler de then innecesario. Gracias @unjust (@lupomontero)
- ed5000f test(common): Corrige nombres de pruebas unitarias. Gracias @unjust (@lupomontero)
- eafe9d8 fix(common): Corrige lógica y tests de getTitle (@lupomontero)
- 8b7cfa0 test(common.js): Adds tests for untested Error branches and augments coverage to 98% (@mfdebian)
- 02d64cd chore(deps): Update dependencies (@mfdebian)
- 53484b1 Merge pull request #67 from unjust/v5.x (@mfdebian)
- 68fe027 feature(project): exportamos transformLearningObjectives para usar en curricula, y mejora su nombre (@unjust)
- c07c1ff fix(version): Muestra versión de package.json relativo a parser, no a cwd (@lupomontero)
- fd5848d chore(pkg): Updates npmignore (@lupomontero)
- a762199 feat(printError): Errores anidados heredan path de parent cuando no tienen path propio (@lupomontero)
- aa744c3 feat(parseTopic): Agrega unitDir a errores de duplicados de slugs de partes (@lupomontero)
- 5d82724 feat(ci): Agrega reporter lcov para coveralls (@lupomontero)
- 49cf4de fix(ci): Include coverage when running npm test (@lupomontero)
- c0fd10f chore(pkg): Agrega eslint-plugin-import como dep para evitar errores en CI (@lupomontero)
- 171fe82 chore(pkg): Actualiza dependencias (@lupomontero)
- 5bdf8c9 test(*): Actualiza pruebas y comienza limpieza de fixtures obsoletos (@lupomontero)
- 2d73dcf feat(common.parseReadmes): Throw when no langs detected (@lupomontero)
- 23cf363 feat(parsePart): Removes type quiz (@lupomontero)
- a31fd54 feat(parseChallenge): Validate challenge env (cjs or dom) (@lupomontero)
- c4a522c feat(eslint): Changes eslint parser to ecmaVersion 2022 (@lupomontero)
- 0f8d801 feat(parseTopic): Adds checks to make sure unit and part slugs are unique in their context (@lupomontero)
- ed8abda test(topic): Adds test for intl keys (@unjust)
- 3425b5b test(topic): Adds vscode to gitignore for launch.json (@unjust)
- 49ce98e test(topic): Groups reject describe (@unjust )
- 2cb6740 test(topic): Added first few Topic component's tests (@mfdebian)
- e247241 doc(readme): Cambia rutas de ejemplo de absolutas a relativas (@lupomontero)
- a9a5774 docs(README): Updates usage instruction examples (@mfdebian)
- e86f45a feat(*): Reorganiza código en general para v5.x (@lupomontero)
- 14a0d6d chore(pkg): Actualiza dependencias (@lupomontero)
- 13e964f Merge pull request #56 from mfdebian/v5.x (@mfdebian)
- be3cb13 chore(esm): Convert app to ESM, adds cmd property to cmd/topic.js and adds ecmaVersion and 2 new rules regarding imports to .eslintrc (TODO: tests) (@mfdebian)
- a6581fe refactor(*): Convierte en ESM y refactoriza parseado de proyectos para detectar locales #52 (@lupomontero)
Full Changelog: v4.0.0...v5.x
v4.0.0
⚠️ BREAKING CHANGES
Requires Node.js v14 or greater.
Changelog
- 98fc31f chore(pkg): Updates deps and required Node v14 or greater @lupomontero
- 86bcca0 fix(common): Arregla URL generada para links a Vimeo @lupomontero
- 795a4a3 fix(vimeo url parser): Fixed url parsing for vimeo videos with a hash in its url, added test for readme with a vimeo video with hashes @mfdebian
- 115d122 fix(style): Apply suggestions from code review (linter issues) @mfdebian @lupomontero
- 3ad4cfa feat(common): cambio de url embebida de vimeo @fakel
Full Changelog: v3.2.0...v4.0.0
v3.2.0
Changelog
- 562a3c6 chore(deps): Actualiza deps y deja de usar @laboratoria/models y mongoose
- f5cfcba feat(course): Make use of getImages function on course.js module, includes tests
- abcab07 feat(common): Moved getImages function from project.js to common.js to be used in other modules
- e0f1a28 chore(deps): Upgrades dependencies including the
marked
dependency which was yelding a high vulnerability in its previous version - 3019c5c Update mentions to 'master' branch to refer to the current 'main' branch, including the outdated badge from coveralls.io on tests coverage on README file
v3.1.0
v3.0.0 - The landing
⚠️ Breaking changes
Quita dependencia obsoleta @laboratoria/rubric
Este release finalmente deja de incluir @laboratoria/rubric
como dependencia, la cual fue oficilamente deprecada en diciembre del año pasado (2020). Como reemplazo de rubric
ahora se incluye nueva funcionalidad para manejar los objetivos de aprendizaje de los proyectos (ver puntos más abajo).
Los JSON de proyecto ya no incluyen los campos rubric y skills
Estos campos hacían referencia a la antigua rúbrica. El parser ya no trata de parsear nada relacionado a la antigua rúbrica. En api.laboratoria.la
el campo rubric
es requerido pero tiene un valor por defecto, así que no debería ser necesario quitarlo de ProjectSchema
, y el campo skills
ya era opcional de todas formas.
Los JSON
de proyecto ahora opcionalmente incluyen el campo learningObjectives
Este campo es un arreglo de strings. Por ejemplo:
{
"slug": "trivia-pt",
"repo": "Laboratoria/bootcamp",
"path": "projects/00-trivia",
"version": "3.0.0-alpha.0",
"parserVersion": "3.0.0-alpha.1",
"createdAt": "2021-06-02T00:55:35.126Z",
"prefix": 0,
"title": "Trivia",
"locale": "pt-BR",
"track": "js",
"learningObjectives": [
"html/semantics",
"css/selectors",
"browser/dom/selectors",
"browser/dom/events",
"browser/dom/manipulation",
"js/data-types/primitive",
"js/data-types/strings",
"js/variables",
"js/conditionals",
"js/functions",
"js/semantics",
"ux/user-understanding",
"ux/prototyping"
]
}
Los objetivos de aprendizaje de cada proyecto se especifican opcionalmente en un archivo project.yml
. Ver ejemplo. Los objetivos de aprendizaje en los proyectos son opcionales. Éste es el punto más peliagudo. En la estructura actual de ProjectSchema
no se incluye la propiedad learningObjectives
, así que asumo que no quedaría guardada en API y por ende MongoDB.
Opción --rubric
se ha quitado del comando curriculum-parser project
en favor de --lo
Ahora para parsear proyectos usamos una nueva opción --lo
(siglas de Learning Objectives) donde específicamos la ruta al directorio que contiene la data centralizada de los objetivos de aprendizaje. Por ejemplo, en la versión 3.x
de Laboratoria/bootcamp
podríamos parsear un proyecto de la siguiente manera:
curriculum-parser project projects/00-trivia \
--repo Laboratoria/bootcamp \
--version 3.0.0 \
--locale es-ES \
--track js \
--lo=./learning-objectives
Changelog
v2.7.1: Security update
Upgrades marked
to 2.x.