diff --git a/quiz-app/package-lock.json b/quiz-app/package-lock.json index e9aebee3..8f51a0ba 100644 --- a/quiz-app/package-lock.json +++ b/quiz-app/package-lock.json @@ -1087,16 +1087,6 @@ "postcss": "^7.0.0" } }, - "@kazupon/vue-i18n-loader": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@kazupon/vue-i18n-loader/-/vue-i18n-loader-0.5.0.tgz", - "integrity": "sha512-Tp2mXKemf9/RBhI9CW14JjR9oKjL2KH7tV6S0eKEjIBuQBAOFNuPJu3ouacmz9hgoXbNp+nusw3MVQmxZWFR9g==", - "dev": true, - "requires": { - "js-yaml": "^3.13.1", - "json5": "^2.1.1" - } - }, "@mrmlnc/readdir-enhanced": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", @@ -1720,6 +1710,16 @@ "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", "dev": true }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "optional": true, + "requires": { + "color-convert": "^2.0.1" + } + }, "cacache": { "version": "13.0.1", "resolved": "https://registry.npmjs.org/cacache/-/cacache-13.0.1.tgz", @@ -1746,6 +1746,53 @@ "unique-filename": "^1.1.1" } }, + "chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "dev": true, + "optional": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "optional": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "optional": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "optional": true + }, + "loader-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", + "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", + "dev": true, + "optional": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -1762,6 +1809,16 @@ "minipass": "^3.1.1" } }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "optional": true, + "requires": { + "has-flag": "^4.0.0" + } + }, "terser-webpack-plugin": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-2.3.8.tgz", @@ -1778,6 +1835,18 @@ "terser": "^4.6.12", "webpack-sources": "^1.4.3" } + }, + "vue-loader-v16": { + "version": "npm:vue-loader@16.3.0", + "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-16.3.0.tgz", + "integrity": "sha512-UDgni/tUVSdwHuQo+vuBmEgamWx88SuSlEb5fgdvHrlJSPB9qMBRF6W7bfPWSqDns425Gt1wxAUif+f+h/rWjg==", + "dev": true, + "optional": true, + "requires": { + "chalk": "^4.1.0", + "hash-sum": "^2.0.0", + "loader-utils": "^2.0.0" + } } } }, @@ -10953,87 +11022,6 @@ } } }, - "vue-loader-v16": { - "version": "npm:vue-loader@16.1.2", - "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-16.1.2.tgz", - "integrity": "sha512-8QTxh+Fd+HB6fiL52iEVLKqE9N1JSlMXLR92Ijm6g8PZrwIxckgpqjPDWRP5TWxdiPaHR+alUWsnu1ShQOwt+Q==", - "dev": true, - "optional": true, - "requires": { - "chalk": "^4.1.0", - "hash-sum": "^2.0.0", - "loader-utils": "^2.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "optional": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "dev": true, - "optional": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "optional": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "optional": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "optional": true - }, - "loader-utils": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", - "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", - "dev": true, - "optional": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "optional": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, "vue-router": { "version": "3.4.9", "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-3.4.9.tgz", diff --git a/quiz-app/src/App.vue b/quiz-app/src/App.vue index 4f4e629e..328058a1 100644 --- a/quiz-app/src/App.vue +++ b/quiz-app/src/App.vue @@ -6,6 +6,7 @@ ?", + "answerOptions": [ + { + "answerText": "max", + "isCorrect": "false" + }, + { + "answerText": "maxlength", + "isCorrect": "true" + }, + { + "answerText": "pattern", + "isCorrect": "false" + } + ] + } + ] + }, + { + "id": 45, + "title": "Leçon 23 - Projet bancaire - Méthodes d’extraction et d’utilisation des données : quiz de pré-lecture", + "quiz": [ + { + "questionText": "Vous récupérez généralement des données à partir d’un serveur de manière synchrone dans un navigateur", + "answerOptions": [ + { + "answerText": "vrai, mais async est le meilleur !", + "isCorrect": "true" + }, + { + "answerText": "faux", + "isCorrect": "false" + } + ] + }, + { + "questionText": "Quel est le format le plus couramment utilisé pour échanger des données sur le Web?", + "answerOptions": [ + { + "answerText": "HTML", + "isCorrect": "false" + }, + { + "answerText": "XML", + "isCorrect": "false" + }, + { + "answerText": "JSON", + "isCorrect": "true" + } + ] + }, + { + "questionText": "Il n’existe aucun moyen d’empêcher une page Web d’accéder à une API de serveur public", + "answerOptions": [ + { + "answerText": "vrai", + "isCorrect": "false" + }, + { + "answerText": "faux", + "isCorrect": "true" + } + ] + } + ] + }, + { + "id": 46, + "title": "Leçon 23 - Projet bancaire - Méthodes d’extraction et d’utilisation des données : quiz post-lecture", + "quiz": [ + { + "questionText": "Dans une application mono-page, le code HTML est chargé une fois et jamais mis à jou", + "answerOptions": [ + { + "answerText": "vrai", + "isCorrect": "false" + }, + { + "answerText": "faux", + "isCorrect": "true" + } + ] + }, + { + "questionText": "Pourquoi est-il important de ne pas faire confiance aux données provenant des entrées d’utilisateur ?", + "answerOptions": [ + { + "answerText": "car l’utilisation de caractères spéciaux peut rendre l’interface utilisateur laide.", + "isCorrect": "false" + }, + { + "answerText": "parce qu’il peut contenir des mots absurdes ou offensants.", + "isCorrect": "false" + }, + { + "answerText": "parce qu’il peut être utilisé comme vecteur d’attaque pour exécuter des scripts malveillants.", + "isCorrect": "true" + } + ] + }, + { + "questionText": "Quel est le nom de l’API pour l’envoi de requêtes HTTP asynchrones à un serveur web ?", + "answerOptions": [ + { + "answerText": "request()", + "isCorrect": "false" + }, + { + "answerText": "fetch()", + "isCorrect": "true" + }, + { + "answerText": "ajax()", + "isCorrect": "false" + } + ] + } + ] + }, + { + "id": 47, + "title": "Leçon 24 - Projet bancaire - Concepts de gestion de l’État : quiz de pré-lecture", + "quiz": [ + { + "questionText": "Qu’est-ce qu’un objet immuable ?", + "answerOptions": [ + { + "answerText": "Un objet défini comme constante", + "isCorrect": "false" + }, + { + "answerText": "Un objet qui ne peut pas être modifié après sa création", + "isCorrect": "true" + }, + { + "answerText": "Une copie d’un objet existant", + "isCorrect": "false" + } + ] + }, + { + "questionText": "Quel(s) avantage(s) obtenez-vous de l’utilisation de la gestion de l’État?", + "answerOptions": [ + { + "answerText": "Vous pouvez garder une trace de chaque endroit où l’état est mis à jour", + "isCorrect": "false" + }, + { + "answerText": "Il est plus facile de déboguer le code", + "isCorrect": "false" + }, + { + "answerText": "Chacun des deux", + "isCorrect": "true" + } + ] + }, + { + "questionText": "Quelle est la meilleure façon de conserver les données utilisateur critiques entre différentes sessions ?", + "answerOptions": [ + { + "answerText": "L'utilisation de fichiers", + "isCorrect": "false" + }, + { + "answerText": "L'utilisation de l’API localStorage du navigateur", + "isCorrect": "false" + }, + { + "answerText": "Dans une base de données derrière une API de serveur", + "isCorrect": "true" + } + ] + } + ] + }, + { + "id": 48, + "title": "Leçon 24 - Projet bancaire - Concepts de gestion de l’État : quiz post-lecture", + "quiz": [ + { + "questionText": "Que signifie, selon vous, la gestion de l’État ?", + "answerOptions": [ + { + "answerText": "L'application de la loi et de l’ordre", + "isCorrect": "false" + }, + { + "answerText": "La journalisation de l’état de l’interface utilisateur au fil du temps", + "isCorrect": "false" + }, + { + "answerText": "Garder les flux de données de votre application propres et synchroniser l’interface utilisateur avec les données", + "isCorrect": "true" + } + ] + }, + { + "questionText": "Comment pouvez-vous effectuer le suivi de l’état de session de l’utilisateur ?", + "answerOptions": [ + { + "answerText": "Cookies HTTP", + "isCorrect": "false" + }, + { + "answerText": "Stockage local ou de session", + "isCorrect": "false" + }, + { + "answerText": "Chacun des deux", + "isCorrect": "true" + } + ] + }, + { + "questionText": "La mutation d’un objet est toujours le meilleur moyen de le mettre à jour", + "answerOptions": [ + { + "answerText": "vrai", + "isCorrect": "false" + }, + { + "answerText": "faux", + "isCorrect": "true" + } + ] + } + ] + } + + ] + } +] diff --git a/quiz-app/src/assets/translations/index.js b/quiz-app/src/assets/translations/index.js index ec072f61..f8499e94 100644 --- a/quiz-app/src/assets/translations/index.js +++ b/quiz-app/src/assets/translations/index.js @@ -11,6 +11,7 @@ import es from './es.json'; import nl from './nl.json'; import zh_cn from './zh_cn.json'; import zh_tw from './zh_tw.json'; +import fr from './fr.json'; //export const defaultLocale = 'en'; @@ -28,6 +29,7 @@ const messages = { nl: nl[0], zh_cn: zh_cn[0], zh_tw: zh_tw[0], + fr: fr[0], };