From 71cb49a7e42f7c895a193e47dbe0157774fce082 Mon Sep 17 00:00:00 2001 From: Matei Adriel Date: Thu, 5 Nov 2020 08:48:37 +0200 Subject: [PATCH 1/5] javascript(quizizz-hack): feat: cli Signed-off-by: prescientmoon --- javascript/quizizz-hack/.gitignore | 1 + javascript/quizizz-hack/file.json | 1 + javascript/quizizz-hack/index.js | 109 +++++++++++++++++++++++++ javascript/quizizz-hack/package.json | 1 + javascript/quizizz-hack/pnpm-lock.yaml | 63 ++++++++++++++ 5 files changed, 175 insertions(+) create mode 100644 javascript/quizizz-hack/.gitignore create mode 100644 javascript/quizizz-hack/file.json create mode 100644 javascript/quizizz-hack/index.js create mode 100644 javascript/quizizz-hack/package.json create mode 100644 javascript/quizizz-hack/pnpm-lock.yaml diff --git a/javascript/quizizz-hack/.gitignore b/javascript/quizizz-hack/.gitignore new file mode 100644 index 0000000..3c3629e --- /dev/null +++ b/javascript/quizizz-hack/.gitignore @@ -0,0 +1 @@ +node_modules diff --git a/javascript/quizizz-hack/file.json b/javascript/quizizz-hack/file.json new file mode 100644 index 0000000..7297271 --- /dev/null +++ b/javascript/quizizz-hack/file.json @@ -0,0 +1 @@ +{"success":true,"message":"Ok","data":{"quiz":{"isTagged":false,"isLoved":false,"stats":{"played":1028,"totalPlayers":1275,"totalCorrect":4570,"totalQuestions":9060},"love":0,"cloned":false,"parentDetail":null,"deleted":false,"draftVersion":null,"publishedVersion":"5eb92da422b3ee001b108a59","type":"quiz","_id":"5eb925fb3cd22e001daa1bde","info":{"_id":"5eb92da422b3ee001b108a59","traits":{"isQuizWithoutCorrectAnswer":false},"pref":{"time":null},"lang":"Romanian, Moldavian, Moldovan","visibility":true,"questions":[{"_id":"5eb92642fd4004001c79d153","type":"MCQ","published":true,"structure":{"settings":{"hasCorrectAnswer":true},"kind":"MCQ","query":{"math":{"latex":[],"template":null},"type":null,"hasMath":false,"text":"

Este egalitate.

","media":[]},"options":[{"math":{"latex":[],"template":null},"type":"text","hasMath":false,"text":"

Its a tie.

","media":[]},{"math":{"latex":[],"template":null},"type":"text","hasMath":false,"text":"

It's a tie.

","media":[]},{"math":{"latex":[],"template":null},"type":"text","hasMath":false,"text":"

Tie.

","media":[]}],"answer":1,"hasMath":false},"standards":[],"createdAt":"2020-05-11T10:17:38.188Z","updated":"2020-05-11T10:49:23.315Z","topics":[],"cached":true,"time":10000},{"_id":"5eb9271dfbed6b001bd44777","type":"BLANK","published":true,"structure":{"settings":{"hasCorrectAnswer":true},"answer":[],"kind":"BLANK","query":{"math":{"latex":[],"template":null},"type":null,"hasMath":false,"text":"

Choose the correct form of the word coechipier

teammate / mate / colleague

","media":[]},"options":[{"math":{"latex":[],"template":null},"type":"text","hasMath":false,"text":"teammate ","media":[]}],"hasMath":false},"standards":[],"createdAt":"2020-05-11T10:21:17.638Z","updated":"2020-10-12T16:29:18.682Z","topics":[],"cached":true,"time":10000},{"_id":"5eb92836574fd4001c510aa1","type":"MSQ","published":true,"structure":{"settings":{"hasCorrectAnswer":true},"answer":[2],"kind":"MSQ","query":{"math":{"latex":[],"template":null},"type":null,"hasMath":false,"text":"

Football is a sport that can be played outdoor also.

","media":[]},"options":[{"math":{"latex":[],"template":null},"type":"text","hasMath":false,"text":"

Fotbalul este un sport care se poate juca doar afară.

","media":[]},{"math":{"latex":[],"template":null},"type":"text","hasMath":false,"text":"

Fotbalul este un sport.

","media":[]},{"math":{"latex":[],"template":null},"type":"text","hasMath":false,"text":"

Fotbalul este un sport care se poate juca și afară.

","media":[]},{"math":{"latex":[],"template":null},"type":"text","hasMath":false,"text":"

Fotbalul este un sport care se joacă doar afară.

","media":[]}],"hasMath":false},"standards":[],"createdAt":"2020-05-11T10:25:58.316Z","updated":"2020-05-11T10:49:23.315Z","topics":[],"cached":true,"time":10000},{"_id":"5eb928ecef7bb4001b8f6e83","type":"BLANK","published":true,"structure":{"settings":{"hasCorrectAnswer":true},"answer":[],"kind":"BLANK","query":{"math":{"latex":[],"template":null},"type":null,"hasMath":false,"text":"

What is this?

","media":[{"type":"image","url":"https://quizizz.com/media/resource/gs/quizizz-media/quizzes/a5f19ee0-db31-4f79-9e0c-4b0b9ddabd7d","meta":{"width":275,"height":183,"text":null,"bgColor":null}}]},"options":[{"math":{"latex":[],"template":null},"type":"text","hasMath":false,"text":"award","media":[]},{"math":{"latex":[],"template":null},"type":"text","hasMath":false,"text":"prize","media":[]},{"math":{"latex":[],"template":null},"type":"text","hasMath":false,"text":"trophy","media":[]}],"hasMath":false},"standards":[],"createdAt":"2020-05-11T10:29:00.673Z","updated":"2020-10-12T16:29:18.682Z","topics":[],"cached":true,"time":10000},{"_id":"5eb92969340ff4001c09d3ba","type":"MCQ","published":true,"structure":{"settings":{"hasCorrectAnswer":true},"kind":"MCQ","query":{"math":{"latex":[],"template":null},"type":null,"hasMath":false,"text":"

to dribble = _______________?

","media":[]},"options":[{"math":{"latex":[],"template":null},"type":"text","hasMath":false,"text":"

a dribla

","media":[]},{"math":{"latex":[],"template":null},"type":"text","hasMath":false,"text":"

a pasa

","media":[]},{"math":{"latex":[],"template":null},"type":"text","hasMath":false,"text":"

a lovi

","media":[]}],"answer":0,"hasMath":false},"standards":[],"createdAt":"2020-05-11T10:31:05.378Z","updated":"2020-05-11T10:49:23.315Z","topics":[],"cached":true,"time":10000},{"_id":"5eb92a13f240fb001bf388e2","type":"BLANK","published":true,"structure":{"settings":{"hasCorrectAnswer":true},"answer":[],"kind":"BLANK","query":{"math":{"latex":[],"template":null},"type":null,"hasMath":false,"text":"

Write the suitable verb:

","media":[{"type":"image","url":"https://quizizz.com/media/resource/gs/quizizz-media/quizzes/4d900dbb-6124-4e25-becc-ca1f409dc614","meta":{"width":2000,"height":1335,"text":null,"bgColor":null}}]},"options":[{"math":{"latex":[],"template":null},"type":"text","hasMath":false,"text":"to cheer on","media":[]},{"math":{"latex":[],"template":null},"type":"text","hasMath":false,"text":"cheer on ","media":[]},{"math":{"latex":[],"template":null},"type":"text","hasMath":false,"text":"cheering on ","media":[]},{"math":{"latex":[],"template":null},"type":"text","hasMath":false,"text":"to encourage","media":[]},{"math":{"latex":[],"template":null},"type":"text","hasMath":false,"text":"encourage","media":[]}],"hasMath":false},"standards":[],"createdAt":"2020-05-11T10:33:55.574Z","updated":"2020-05-11T10:49:23.315Z","topics":[],"cached":true,"time":10000},{"_id":"5eb92a8e44acee001c920b2b","type":"MSQ","published":true,"structure":{"settings":{"hasCorrectAnswer":true},"answer":[1],"kind":"MSQ","query":{"math":{"latex":[],"template":null},"type":null,"hasMath":false,"text":"

Netball is similar to ___________

","media":[]},"options":[{"math":{"latex":[],"template":null},"type":"text","hasMath":false,"text":"

volleyball

","media":[]},{"math":{"latex":[],"template":null},"type":"text","hasMath":false,"text":"

basketball

","media":[]},{"math":{"latex":[],"template":null},"type":"text","hasMath":false,"text":"

swimming

","media":[]},{"math":{"latex":[],"template":null},"type":"text","hasMath":false,"text":"

football

","media":[]}],"hasMath":false},"standards":[],"createdAt":"2020-05-11T10:35:58.434Z","updated":"2020-05-11T10:49:23.315Z","topics":[],"cached":true,"time":10000},{"_id":"5eb92b7a22b3ee001b1088d8","type":"MCQ","published":true,"structure":{"settings":{"hasCorrectAnswer":true},"kind":"MCQ","query":{"math":{"latex":[],"template":null},"type":null,"hasMath":false,"text":"","media":[{"type":"image","url":"https://quizizz.com/media/resource/gs/quizizz-media/quizzes/4ff5b765-09ba-470c-a03b-104e663c6bbe","meta":{"width":259,"height":194,"text":null,"bgColor":null}}]},"options":[{"math":{"latex":[],"template":null},"type":"text","hasMath":false,"text":"

It's a tie.

","media":[]},{"math":{"latex":[],"template":null},"type":"text","hasMath":false,"text":"

It's tie.

","media":[]},{"math":{"latex":[],"template":null},"type":"text","hasMath":false,"text":"

Tie.

","media":[]}],"answer":0,"hasMath":false},"standards":[],"createdAt":"2020-05-11T10:39:54.130Z","updated":"2020-05-11T10:49:23.315Z","topics":[],"cached":true,"time":10000},{"_id":"5eb92bab68b5c6001cd30787","type":"MSQ","published":true,"structure":{"settings":{"hasCorrectAnswer":true},"answer":[0],"kind":"MSQ","query":{"math":{"latex":[],"template":null},"type":null,"hasMath":false,"text":"

Tie can also mean:

","media":[]},"options":[{"math":{"latex":[],"template":null},"type":"text","hasMath":false,"text":"

cravată

","media":[]},{"math":{"latex":[],"template":null},"type":"text","hasMath":false,"text":"

eșarfă

","media":[]},{"math":{"latex":[],"template":null},"type":"text","hasMath":false,"text":"

cămașă

","media":[]}],"hasMath":false},"standards":[],"createdAt":"2020-05-11T10:40:43.785Z","updated":"2020-05-11T10:49:23.315Z","topics":[],"cached":true,"time":10000},{"_id":"5eb92c7fef7bb4001b8f70ff","type":"MSQ","published":true,"structure":{"settings":{"hasCorrectAnswer":true},"answer":[2,0],"kind":"MSQ","query":{"math":{"latex":[],"template":null},"type":null,"hasMath":false,"text":"

This makes you think about ...

","media":[{"type":"image","url":"https://quizizz.com/media/resource/gs/quizizz-media/quizzes/9311836c-1106-4092-8a22-8a0c60dc49e5","meta":{"width":1600,"height":1098,"text":null,"bgColor":null}}]},"options":[{"math":{"latex":[],"template":null},"type":"text","hasMath":false,"text":"

free time

","media":[]},{"math":{"latex":[],"template":null},"type":"text","hasMath":false,"text":"

work

","media":[]},{"math":{"latex":[],"template":null},"type":"text","hasMath":false,"text":"

leisure time

","media":[]}],"hasMath":false},"standards":[],"createdAt":"2020-05-11T10:44:15.347Z","updated":"2020-05-11T10:49:23.315Z","topics":[],"cached":true,"time":10000}],"subjects":["English"],"topics":[],"subtopics":[],"grade":["3","6"],"gradeLevel":null,"deleted":false,"standards":[],"name":"Sports","image":"https://quizizz.com/media/resource/gs/quizizz-media/quizzes/d84034df-e1a8-4b35-a58b-0eaf704dfae0","qm":{"5eb92642fd4004001c79d153":{"time":10000},"5eb9271dfbed6b001bd44777":{"time":10000},"5eb92836574fd4001c510aa1":{"time":10000},"5eb928ecef7bb4001b8f6e83":{"time":10000},"5eb92969340ff4001c09d3ba":{"time":10000},"5eb92a13f240fb001bf388e2":{"time":10000},"5eb92a8e44acee001c920b2b":{"time":10000},"5eb92b7a22b3ee001b1088d8":{"time":10000},"5eb92bab68b5c6001cd30787":{"time":10000},"5eb92c7fef7bb4001b8f70ff":{"time":10000}},"createdAt":"2020-05-11T10:49:08.702Z","updated":"2020-05-11T10:49:23.317Z","profane":false,"isProfane":false,"whitelisted":true,"cached":true,"courses":[]},"createdBy":{"local":{"username":"luanarusu_40925","casedUsername":"luanarusu_40925"},"google":{"createdAt":"2020-03-12T15:51:44.449Z","profileId":"114348773100945102940","email":"luanarusu@gmail.com","displayName":"Luana S. Rusu","firstName":"Luana","lastName":"Rusu","image":"https://lh3.googleusercontent.com/a-/AOh14GiafsFlgPUPGZ_12C1QJ2t0b00my3P59Q7v-5-G"},"student":null,"deactivated":false,"deleted":false,"_id":"5e6a5a90db7068001ba21559","country":"RO","media":"https://lh3.googleusercontent.com/a-/AOh14GiafsFlgPUPGZ_12C1QJ2t0b00my3P59Q7v-5-G","firstName":"Luana","lastName":"Rusu","occupation":"teacher","id":"5e6a5a90db7068001ba21559"},"createdAt":"2020-05-11T10:16:27.220Z","updated":"2020-10-25T14:22:05.153Z","hasPublishedVersion":true,"hasDraftVersion":false},"draft":null},"meta":{"service":"q_api_all","version":"6ab75e6_30e4a80"}} \ No newline at end of file diff --git a/javascript/quizizz-hack/index.js b/javascript/quizizz-hack/index.js new file mode 100644 index 0000000..6ccb52f --- /dev/null +++ b/javascript/quizizz-hack/index.js @@ -0,0 +1,109 @@ +const fetch = require("node-fetch"); +const chalk = require("chalk"); +const { default: readline } = require("readline-promise"); + +const id = process.argv[2]; + +const rlp = readline.createInterface({ + input: process.stdin, + output: process.stdout, + terminal: true, +}); + +const tags = ["p", "strong", "em"]; + +function removeTags(input) { + let copy = input.replace('"', '\\"'); + + for (const tag of tags) + copy = copy.replace(`<${tag}>`, "").replace(``, ""); + + return copy; +} + +// Here is the function to parse the json object. +// It returns object with key/value pair where key is the question and value is the answer +function parseFile(fileObject) { + const allAnswers = {}; + + for (const question of fileObject.data.quiz.info.questions) { + let answer; + + if (question.type === "MCQ") { + if (question.structure.options[question.structure.answer].text == "") { + answer = + question.structure.options[question.structure.answer].media[0].url; + } else { + answer = removeTags( + question.structure.options[question.structure.answer].text + ); + } + } else if (question.type == "MSQ") { + answer = question.structure.answer + .map((answerC) => { + if (question.structure.options[answerC].text == "") { + return question.structure.options[answerC].media[0].url; + } else { + return removeTags(question.structure.options[answerC].text); + } + }) + .filter((a) => a !== undefined); + } else if (question.type == "BLANK") { + answer = question.structure.options.map((o) => removeTags(o.text)); + } + + const questionStr = removeTags(question.structure.query.text); + + allAnswers[questionStr] = answer; + } + + return allAnswers; +} + +function printQuestion(question) { + console.log(chalk.italic(chalk.blue(question[0]))); + console.log(chalk.green(question[1])); +} + +async function repl(o) { + const answer = await rlp.questionAsync(">"); + + if (answer === "all") { + for (const question of o) { + printQuestion(question); + } + } else { + console.log(chalk.underline(answer)); + + for (const question of o) { + let ok = true; + + for (let i = 0; i < question[0].length; i++) { + if (answer[i] === undefined) break; + + if (question[0][i] !== answer[i]) { + ok = false; + break; + } + } + + if (ok) { + printQuestion(question); + } + } + } + + repl(o); +} + +async function main() { + const res = await fetch(`https://quizizz.com/quiz/${id}`); + const jsonObject = await res.json(); + const answers = parseFile(jsonObject); + + const sorted = Object.entries(answers).sort(); + + repl(sorted); +} + +main(); diff --git a/javascript/quizizz-hack/package.json b/javascript/quizizz-hack/package.json new file mode 100644 index 0000000..133e1a7 --- /dev/null +++ b/javascript/quizizz-hack/package.json @@ -0,0 +1 @@ +{"dependencies":{"chalk":"^4.1.0","node-fetch":"^2.6.1","readline-promise":"^1.0.4"}} diff --git a/javascript/quizizz-hack/pnpm-lock.yaml b/javascript/quizizz-hack/pnpm-lock.yaml new file mode 100644 index 0000000..2e81039 --- /dev/null +++ b/javascript/quizizz-hack/pnpm-lock.yaml @@ -0,0 +1,63 @@ +dependencies: + chalk: 4.1.0 + node-fetch: 2.6.1 + readline-promise: 1.0.4 +lockfileVersion: 5.1 +packages: + /ansi-styles/4.3.0: + dependencies: + color-convert: 2.0.1 + dev: false + engines: + node: '>=8' + resolution: + integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + /chalk/4.1.0: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + dev: false + engines: + node: '>=10' + resolution: + integrity: sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== + /color-convert/2.0.1: + dependencies: + color-name: 1.1.4 + dev: false + engines: + node: '>=7.0.0' + resolution: + integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + /color-name/1.1.4: + dev: false + resolution: + integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + /has-flag/4.0.0: + dev: false + engines: + node: '>=8' + resolution: + integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + /node-fetch/2.6.1: + dev: false + engines: + node: 4.x || >=6.0.0 + resolution: + integrity: sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== + /readline-promise/1.0.4: + dev: false + resolution: + integrity: sha512-b6fycDK7CZWpVXbTl8qnW2jovXPduWKpZGyVZbjK/V4A9iiTU4gur+JEkjjgGKLiDZOftkRCT/dxGLG6hR9HyA== + /supports-color/7.2.0: + dependencies: + has-flag: 4.0.0 + dev: false + engines: + node: '>=8' + resolution: + integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== +specifiers: + chalk: ^4.1.0 + node-fetch: ^2.6.1 + readline-promise: ^1.0.4 From 9de94827000707c745fc83930885498e9cd3ef82 Mon Sep 17 00:00:00 2001 From: Matei Adriel Date: Thu, 5 Nov 2020 09:44:45 +0200 Subject: [PATCH 2/5] javascript(quizizz-hack): feat: website Signed-off-by: prescientmoon --- javascript/quizizz-hack/.vscode/settings.json | 5 + .../quizizz-hack/{index.js => entry.js} | 100 +- javascript/quizizz-hack/file.json | 1 - javascript/quizizz-hack/index.html | 17 + javascript/quizizz-hack/package.json | 9 +- javascript/quizizz-hack/pnpm-lock.yaml | 1342 ++++++++++++++++- javascript/quizizz-hack/style.css | 41 + 7 files changed, 1412 insertions(+), 103 deletions(-) create mode 100644 javascript/quizizz-hack/.vscode/settings.json rename javascript/quizizz-hack/{index.js => entry.js} (53%) delete mode 100644 javascript/quizizz-hack/file.json create mode 100644 javascript/quizizz-hack/index.html create mode 100644 javascript/quizizz-hack/style.css diff --git a/javascript/quizizz-hack/.vscode/settings.json b/javascript/quizizz-hack/.vscode/settings.json new file mode 100644 index 0000000..5955f97 --- /dev/null +++ b/javascript/quizizz-hack/.vscode/settings.json @@ -0,0 +1,5 @@ +{ + "cSpell.words": [ + "BFBQC" + ] +} \ No newline at end of file diff --git a/javascript/quizizz-hack/index.js b/javascript/quizizz-hack/entry.js similarity index 53% rename from javascript/quizizz-hack/index.js rename to javascript/quizizz-hack/entry.js index 6ccb52f..e18b0be 100644 --- a/javascript/quizizz-hack/index.js +++ b/javascript/quizizz-hack/entry.js @@ -1,16 +1,6 @@ -const fetch = require("node-fetch"); -const chalk = require("chalk"); -const { default: readline } = require("readline-promise"); +import { render, html } from "https://cdn.skypack.dev/lit-html"; -const id = process.argv[2]; - -const rlp = readline.createInterface({ - input: process.stdin, - output: process.stdout, - terminal: true, -}); - -const tags = ["p", "strong", "em"]; +const tags = ["p", "strong", "em", "sub", "sup", "span", "br"]; function removeTags(input) { let copy = input.replace('"', '\\"'); @@ -23,7 +13,7 @@ function removeTags(input) { // Here is the function to parse the json object. // It returns object with key/value pair where key is the question and value is the answer -function parseFile(fileObject) { +function parseQuestions(fileObject) { const allAnswers = {}; for (const question of fileObject.data.quiz.info.questions) { @@ -59,51 +49,51 @@ function parseFile(fileObject) { return allAnswers; } - -function printQuestion(question) { - console.log(chalk.italic(chalk.blue(question[0]))); - console.log(chalk.green(question[1])); -} - -async function repl(o) { - const answer = await rlp.questionAsync(">"); - - if (answer === "all") { - for (const question of o) { - printQuestion(question); - } - } else { - console.log(chalk.underline(answer)); - - for (const question of o) { - let ok = true; - - for (let i = 0; i < question[0].length; i++) { - if (answer[i] === undefined) break; - - if (question[0][i] !== answer[i]) { - ok = false; - break; - } - } - - if (ok) { - printQuestion(question); - } - } - } - - repl(o); -} - -async function main() { - const res = await fetch(`https://quizizz.com/quiz/${id}`); +async function main(id) { + const res = await fetch( + `https://api.allorigins.win/get?url=${encodeURIComponent( + `https://quizizz.com/quiz/${id}` + )}`, + {} + ); const jsonObject = await res.json(); - const answers = parseFile(jsonObject); + const parsedJson = JSON.parse(jsonObject.contents); + + console.log(parsedJson.data); + + const answers = parseQuestions(parsedJson); const sorted = Object.entries(answers).sort(); - repl(sorted); + render(renderQuestions(sorted), rootElement); } -main(); +const inputElement = document.getElementById("id"); +const rootElement = document.getElementById("root"); + +inputElement.addEventListener("keypress", (e) => { + if (e.key === "Enter") { + main(e.target.value).catch(console.error); + } +}); + +console.log("here"); + +const renderQuestions = (questions) => { + return html`${questions.map(([question, answer]) => { + return html` +
+
${question}
+ ${Array.isArray(answer) + ? html` +
    + ${answer.map((correct) => { + return html`
  • ${correct}
  • `; + })} +
+ ` + : html`
${answer}
`} +
+ `; + })}`; +}; diff --git a/javascript/quizizz-hack/file.json b/javascript/quizizz-hack/file.json deleted file mode 100644 index 7297271..0000000 --- a/javascript/quizizz-hack/file.json +++ /dev/null @@ -1 +0,0 @@ -{"success":true,"message":"Ok","data":{"quiz":{"isTagged":false,"isLoved":false,"stats":{"played":1028,"totalPlayers":1275,"totalCorrect":4570,"totalQuestions":9060},"love":0,"cloned":false,"parentDetail":null,"deleted":false,"draftVersion":null,"publishedVersion":"5eb92da422b3ee001b108a59","type":"quiz","_id":"5eb925fb3cd22e001daa1bde","info":{"_id":"5eb92da422b3ee001b108a59","traits":{"isQuizWithoutCorrectAnswer":false},"pref":{"time":null},"lang":"Romanian, Moldavian, Moldovan","visibility":true,"questions":[{"_id":"5eb92642fd4004001c79d153","type":"MCQ","published":true,"structure":{"settings":{"hasCorrectAnswer":true},"kind":"MCQ","query":{"math":{"latex":[],"template":null},"type":null,"hasMath":false,"text":"

Este egalitate.

","media":[]},"options":[{"math":{"latex":[],"template":null},"type":"text","hasMath":false,"text":"

Its a tie.

","media":[]},{"math":{"latex":[],"template":null},"type":"text","hasMath":false,"text":"

It's a tie.

","media":[]},{"math":{"latex":[],"template":null},"type":"text","hasMath":false,"text":"

Tie.

","media":[]}],"answer":1,"hasMath":false},"standards":[],"createdAt":"2020-05-11T10:17:38.188Z","updated":"2020-05-11T10:49:23.315Z","topics":[],"cached":true,"time":10000},{"_id":"5eb9271dfbed6b001bd44777","type":"BLANK","published":true,"structure":{"settings":{"hasCorrectAnswer":true},"answer":[],"kind":"BLANK","query":{"math":{"latex":[],"template":null},"type":null,"hasMath":false,"text":"

Choose the correct form of the word coechipier

teammate / mate / colleague

","media":[]},"options":[{"math":{"latex":[],"template":null},"type":"text","hasMath":false,"text":"teammate ","media":[]}],"hasMath":false},"standards":[],"createdAt":"2020-05-11T10:21:17.638Z","updated":"2020-10-12T16:29:18.682Z","topics":[],"cached":true,"time":10000},{"_id":"5eb92836574fd4001c510aa1","type":"MSQ","published":true,"structure":{"settings":{"hasCorrectAnswer":true},"answer":[2],"kind":"MSQ","query":{"math":{"latex":[],"template":null},"type":null,"hasMath":false,"text":"

Football is a sport that can be played outdoor also.

","media":[]},"options":[{"math":{"latex":[],"template":null},"type":"text","hasMath":false,"text":"

Fotbalul este un sport care se poate juca doar afară.

","media":[]},{"math":{"latex":[],"template":null},"type":"text","hasMath":false,"text":"

Fotbalul este un sport.

","media":[]},{"math":{"latex":[],"template":null},"type":"text","hasMath":false,"text":"

Fotbalul este un sport care se poate juca și afară.

","media":[]},{"math":{"latex":[],"template":null},"type":"text","hasMath":false,"text":"

Fotbalul este un sport care se joacă doar afară.

","media":[]}],"hasMath":false},"standards":[],"createdAt":"2020-05-11T10:25:58.316Z","updated":"2020-05-11T10:49:23.315Z","topics":[],"cached":true,"time":10000},{"_id":"5eb928ecef7bb4001b8f6e83","type":"BLANK","published":true,"structure":{"settings":{"hasCorrectAnswer":true},"answer":[],"kind":"BLANK","query":{"math":{"latex":[],"template":null},"type":null,"hasMath":false,"text":"

What is this?

","media":[{"type":"image","url":"https://quizizz.com/media/resource/gs/quizizz-media/quizzes/a5f19ee0-db31-4f79-9e0c-4b0b9ddabd7d","meta":{"width":275,"height":183,"text":null,"bgColor":null}}]},"options":[{"math":{"latex":[],"template":null},"type":"text","hasMath":false,"text":"award","media":[]},{"math":{"latex":[],"template":null},"type":"text","hasMath":false,"text":"prize","media":[]},{"math":{"latex":[],"template":null},"type":"text","hasMath":false,"text":"trophy","media":[]}],"hasMath":false},"standards":[],"createdAt":"2020-05-11T10:29:00.673Z","updated":"2020-10-12T16:29:18.682Z","topics":[],"cached":true,"time":10000},{"_id":"5eb92969340ff4001c09d3ba","type":"MCQ","published":true,"structure":{"settings":{"hasCorrectAnswer":true},"kind":"MCQ","query":{"math":{"latex":[],"template":null},"type":null,"hasMath":false,"text":"

to dribble = _______________?

","media":[]},"options":[{"math":{"latex":[],"template":null},"type":"text","hasMath":false,"text":"

a dribla

","media":[]},{"math":{"latex":[],"template":null},"type":"text","hasMath":false,"text":"

a pasa

","media":[]},{"math":{"latex":[],"template":null},"type":"text","hasMath":false,"text":"

a lovi

","media":[]}],"answer":0,"hasMath":false},"standards":[],"createdAt":"2020-05-11T10:31:05.378Z","updated":"2020-05-11T10:49:23.315Z","topics":[],"cached":true,"time":10000},{"_id":"5eb92a13f240fb001bf388e2","type":"BLANK","published":true,"structure":{"settings":{"hasCorrectAnswer":true},"answer":[],"kind":"BLANK","query":{"math":{"latex":[],"template":null},"type":null,"hasMath":false,"text":"

Write the suitable verb:

","media":[{"type":"image","url":"https://quizizz.com/media/resource/gs/quizizz-media/quizzes/4d900dbb-6124-4e25-becc-ca1f409dc614","meta":{"width":2000,"height":1335,"text":null,"bgColor":null}}]},"options":[{"math":{"latex":[],"template":null},"type":"text","hasMath":false,"text":"to cheer on","media":[]},{"math":{"latex":[],"template":null},"type":"text","hasMath":false,"text":"cheer on ","media":[]},{"math":{"latex":[],"template":null},"type":"text","hasMath":false,"text":"cheering on ","media":[]},{"math":{"latex":[],"template":null},"type":"text","hasMath":false,"text":"to encourage","media":[]},{"math":{"latex":[],"template":null},"type":"text","hasMath":false,"text":"encourage","media":[]}],"hasMath":false},"standards":[],"createdAt":"2020-05-11T10:33:55.574Z","updated":"2020-05-11T10:49:23.315Z","topics":[],"cached":true,"time":10000},{"_id":"5eb92a8e44acee001c920b2b","type":"MSQ","published":true,"structure":{"settings":{"hasCorrectAnswer":true},"answer":[1],"kind":"MSQ","query":{"math":{"latex":[],"template":null},"type":null,"hasMath":false,"text":"

Netball is similar to ___________

","media":[]},"options":[{"math":{"latex":[],"template":null},"type":"text","hasMath":false,"text":"

volleyball

","media":[]},{"math":{"latex":[],"template":null},"type":"text","hasMath":false,"text":"

basketball

","media":[]},{"math":{"latex":[],"template":null},"type":"text","hasMath":false,"text":"

swimming

","media":[]},{"math":{"latex":[],"template":null},"type":"text","hasMath":false,"text":"

football

","media":[]}],"hasMath":false},"standards":[],"createdAt":"2020-05-11T10:35:58.434Z","updated":"2020-05-11T10:49:23.315Z","topics":[],"cached":true,"time":10000},{"_id":"5eb92b7a22b3ee001b1088d8","type":"MCQ","published":true,"structure":{"settings":{"hasCorrectAnswer":true},"kind":"MCQ","query":{"math":{"latex":[],"template":null},"type":null,"hasMath":false,"text":"","media":[{"type":"image","url":"https://quizizz.com/media/resource/gs/quizizz-media/quizzes/4ff5b765-09ba-470c-a03b-104e663c6bbe","meta":{"width":259,"height":194,"text":null,"bgColor":null}}]},"options":[{"math":{"latex":[],"template":null},"type":"text","hasMath":false,"text":"

It's a tie.

","media":[]},{"math":{"latex":[],"template":null},"type":"text","hasMath":false,"text":"

It's tie.

","media":[]},{"math":{"latex":[],"template":null},"type":"text","hasMath":false,"text":"

Tie.

","media":[]}],"answer":0,"hasMath":false},"standards":[],"createdAt":"2020-05-11T10:39:54.130Z","updated":"2020-05-11T10:49:23.315Z","topics":[],"cached":true,"time":10000},{"_id":"5eb92bab68b5c6001cd30787","type":"MSQ","published":true,"structure":{"settings":{"hasCorrectAnswer":true},"answer":[0],"kind":"MSQ","query":{"math":{"latex":[],"template":null},"type":null,"hasMath":false,"text":"

Tie can also mean:

","media":[]},"options":[{"math":{"latex":[],"template":null},"type":"text","hasMath":false,"text":"

cravată

","media":[]},{"math":{"latex":[],"template":null},"type":"text","hasMath":false,"text":"

eșarfă

","media":[]},{"math":{"latex":[],"template":null},"type":"text","hasMath":false,"text":"

cămașă

","media":[]}],"hasMath":false},"standards":[],"createdAt":"2020-05-11T10:40:43.785Z","updated":"2020-05-11T10:49:23.315Z","topics":[],"cached":true,"time":10000},{"_id":"5eb92c7fef7bb4001b8f70ff","type":"MSQ","published":true,"structure":{"settings":{"hasCorrectAnswer":true},"answer":[2,0],"kind":"MSQ","query":{"math":{"latex":[],"template":null},"type":null,"hasMath":false,"text":"

This makes you think about ...

","media":[{"type":"image","url":"https://quizizz.com/media/resource/gs/quizizz-media/quizzes/9311836c-1106-4092-8a22-8a0c60dc49e5","meta":{"width":1600,"height":1098,"text":null,"bgColor":null}}]},"options":[{"math":{"latex":[],"template":null},"type":"text","hasMath":false,"text":"

free time

","media":[]},{"math":{"latex":[],"template":null},"type":"text","hasMath":false,"text":"

work

","media":[]},{"math":{"latex":[],"template":null},"type":"text","hasMath":false,"text":"

leisure time

","media":[]}],"hasMath":false},"standards":[],"createdAt":"2020-05-11T10:44:15.347Z","updated":"2020-05-11T10:49:23.315Z","topics":[],"cached":true,"time":10000}],"subjects":["English"],"topics":[],"subtopics":[],"grade":["3","6"],"gradeLevel":null,"deleted":false,"standards":[],"name":"Sports","image":"https://quizizz.com/media/resource/gs/quizizz-media/quizzes/d84034df-e1a8-4b35-a58b-0eaf704dfae0","qm":{"5eb92642fd4004001c79d153":{"time":10000},"5eb9271dfbed6b001bd44777":{"time":10000},"5eb92836574fd4001c510aa1":{"time":10000},"5eb928ecef7bb4001b8f6e83":{"time":10000},"5eb92969340ff4001c09d3ba":{"time":10000},"5eb92a13f240fb001bf388e2":{"time":10000},"5eb92a8e44acee001c920b2b":{"time":10000},"5eb92b7a22b3ee001b1088d8":{"time":10000},"5eb92bab68b5c6001cd30787":{"time":10000},"5eb92c7fef7bb4001b8f70ff":{"time":10000}},"createdAt":"2020-05-11T10:49:08.702Z","updated":"2020-05-11T10:49:23.317Z","profane":false,"isProfane":false,"whitelisted":true,"cached":true,"courses":[]},"createdBy":{"local":{"username":"luanarusu_40925","casedUsername":"luanarusu_40925"},"google":{"createdAt":"2020-03-12T15:51:44.449Z","profileId":"114348773100945102940","email":"luanarusu@gmail.com","displayName":"Luana S. Rusu","firstName":"Luana","lastName":"Rusu","image":"https://lh3.googleusercontent.com/a-/AOh14GiafsFlgPUPGZ_12C1QJ2t0b00my3P59Q7v-5-G"},"student":null,"deactivated":false,"deleted":false,"_id":"5e6a5a90db7068001ba21559","country":"RO","media":"https://lh3.googleusercontent.com/a-/AOh14GiafsFlgPUPGZ_12C1QJ2t0b00my3P59Q7v-5-G","firstName":"Luana","lastName":"Rusu","occupation":"teacher","id":"5e6a5a90db7068001ba21559"},"createdAt":"2020-05-11T10:16:27.220Z","updated":"2020-10-25T14:22:05.153Z","hasPublishedVersion":true,"hasDraftVersion":false},"draft":null},"meta":{"service":"q_api_all","version":"6ab75e6_30e4a80"}} \ No newline at end of file diff --git a/javascript/quizizz-hack/index.html b/javascript/quizizz-hack/index.html new file mode 100644 index 0000000..2ee90bb --- /dev/null +++ b/javascript/quizizz-hack/index.html @@ -0,0 +1,17 @@ + + + + + + BFBQC + + + + +
+ Quizz id + +
+
+ + diff --git a/javascript/quizizz-hack/package.json b/javascript/quizizz-hack/package.json index 133e1a7..1db8653 100644 --- a/javascript/quizizz-hack/package.json +++ b/javascript/quizizz-hack/package.json @@ -1 +1,8 @@ -{"dependencies":{"chalk":"^4.1.0","node-fetch":"^2.6.1","readline-promise":"^1.0.4"}} +{ + "devDependencies": { + "live-server": "^1.2.1" + }, + "scripts": { + "dev": "live-server index.html" + } +} diff --git a/javascript/quizizz-hack/pnpm-lock.yaml b/javascript/quizizz-hack/pnpm-lock.yaml index 2e81039..56aff8a 100644 --- a/javascript/quizizz-hack/pnpm-lock.yaml +++ b/javascript/quizizz-hack/pnpm-lock.yaml @@ -1,63 +1,1313 @@ -dependencies: - chalk: 4.1.0 - node-fetch: 2.6.1 - readline-promise: 1.0.4 +devDependencies: + live-server: 1.2.1 lockfileVersion: 5.1 packages: - /ansi-styles/4.3.0: + /accepts/1.3.7: dependencies: - color-convert: 2.0.1 - dev: false + mime-types: 2.1.27 + negotiator: 0.6.2 + dev: true + engines: + node: '>= 0.6' + resolution: + integrity: sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== + /anymatch/2.0.0: + dependencies: + micromatch: 3.1.10 + normalize-path: 2.1.1 + dev: true + resolution: + integrity: sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== + /apache-crypt/1.2.4: + dependencies: + unix-crypt-td-js: 1.1.4 + dev: true engines: node: '>=8' resolution: - integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== - /chalk/4.1.0: - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - dev: false - engines: - node: '>=10' - resolution: - integrity: sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== - /color-convert/2.0.1: - dependencies: - color-name: 1.1.4 - dev: false - engines: - node: '>=7.0.0' - resolution: - integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - /color-name/1.1.4: - dev: false - resolution: - integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - /has-flag/4.0.0: - dev: false + integrity: sha512-Icze5ny5W5uv3xgMgl8U+iGmRCC0iIDrb2PVPuRBtL3Zy1Y5TMewXP1Vtc4r5X9eNNBEk7KYPu0Qby9m/PmcHg== + /apache-md5/1.1.5: + dev: true engines: node: '>=8' resolution: - integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - /node-fetch/2.6.1: - dev: false + integrity: sha512-sbLEIMQrkV7RkIruqTPXxeCMkAAycv4yzTkBzRgOR1BrR5UB7qZtupqxkersTJSf0HZ3sbaNRrNV80TnnM7cUw== + /arr-diff/4.0.0: + dev: true engines: - node: 4.x || >=6.0.0 + node: '>=0.10.0' resolution: - integrity: sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== - /readline-promise/1.0.4: - dev: false + integrity: sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= + /arr-flatten/1.1.0: + dev: true + engines: + node: '>=0.10.0' resolution: - integrity: sha512-b6fycDK7CZWpVXbTl8qnW2jovXPduWKpZGyVZbjK/V4A9iiTU4gur+JEkjjgGKLiDZOftkRCT/dxGLG6hR9HyA== - /supports-color/7.2.0: + integrity: sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== + /arr-union/3.1.0: + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= + /array-unique/0.3.2: + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= + /assign-symbols/1.0.0: + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= + /async-each/1.0.3: + dev: true + resolution: + integrity: sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== + /atob/2.1.2: + dev: true + engines: + node: '>= 4.5.0' + hasBin: true + resolution: + integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== + /base/0.11.2: dependencies: - has-flag: 4.0.0 - dev: false + cache-base: 1.0.1 + class-utils: 0.3.6 + component-emitter: 1.3.0 + define-property: 1.0.0 + isobject: 3.0.1 + mixin-deep: 1.3.2 + pascalcase: 0.1.1 + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== + /basic-auth/2.0.1: + dependencies: + safe-buffer: 5.1.2 + dev: true + engines: + node: '>= 0.8' + resolution: + integrity: sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg== + /batch/0.6.1: + dev: true + resolution: + integrity: sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY= + /bcryptjs/2.4.3: + dev: true + resolution: + integrity: sha1-mrVie5PmBiH/fNrF2pczAn3x0Ms= + /binary-extensions/1.13.1: + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== + /bindings/1.5.0: + dependencies: + file-uri-to-path: 1.0.0 + dev: true + optional: true + resolution: + integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== + /braces/2.3.2: + dependencies: + arr-flatten: 1.1.0 + array-unique: 0.3.2 + extend-shallow: 2.0.1 + fill-range: 4.0.0 + isobject: 3.0.1 + repeat-element: 1.1.3 + snapdragon: 0.8.2 + snapdragon-node: 2.1.1 + split-string: 3.1.0 + to-regex: 3.0.2 + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== + /cache-base/1.0.1: + dependencies: + collection-visit: 1.0.0 + component-emitter: 1.3.0 + get-value: 2.0.6 + has-value: 1.0.0 + isobject: 3.0.1 + set-value: 2.0.1 + to-object-path: 0.3.0 + union-value: 1.0.1 + unset-value: 1.0.0 + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== + /chokidar/2.1.8: + dependencies: + anymatch: 2.0.0 + async-each: 1.0.3 + braces: 2.3.2 + glob-parent: 3.1.0 + inherits: 2.0.4 + is-binary-path: 1.0.1 + is-glob: 4.0.1 + normalize-path: 3.0.0 + path-is-absolute: 1.0.1 + readdirp: 2.2.1 + upath: 1.2.0 + deprecated: Chokidar 2 will break on node v14+. Upgrade to chokidar 3 with 15x less dependencies. + dev: true + optionalDependencies: + fsevents: 1.2.13 + resolution: + integrity: sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== + /class-utils/0.3.6: + dependencies: + arr-union: 3.1.0 + define-property: 0.2.5 + isobject: 3.0.1 + static-extend: 0.1.2 + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== + /collection-visit/1.0.0: + dependencies: + map-visit: 1.0.0 + object-visit: 1.0.1 + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= + /colors/1.4.0: + dev: true + engines: + node: '>=0.1.90' + resolution: + integrity: sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== + /component-emitter/1.3.0: + dev: true + resolution: + integrity: sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== + /connect/3.7.0: + dependencies: + debug: 2.6.9 + finalhandler: 1.1.2 + parseurl: 1.3.3 + utils-merge: 1.0.1 + dev: true + engines: + node: '>= 0.10.0' + resolution: + integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ== + /copy-descriptor/0.1.1: + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= + /core-util-is/1.0.2: + dev: true + resolution: + integrity: sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= + /cors/2.8.5: + dependencies: + object-assign: 4.1.1 + vary: 1.1.2 + dev: true + engines: + node: '>= 0.10' + resolution: + integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== + /debug/2.6.9: + dependencies: + ms: 2.0.0 + dev: true + resolution: + integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + /decode-uri-component/0.2.0: + dev: true + engines: + node: '>=0.10' + resolution: + integrity: sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= + /define-property/0.2.5: + dependencies: + is-descriptor: 0.1.6 + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= + /define-property/1.0.0: + dependencies: + is-descriptor: 1.0.2 + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-dp66rz9KY6rTr56NMEybvnm/sOY= + /define-property/2.0.2: + dependencies: + is-descriptor: 1.0.2 + isobject: 3.0.1 + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== + /depd/1.1.2: + dev: true + engines: + node: '>= 0.6' + resolution: + integrity: sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= + /depd/2.0.0: + dev: true + engines: + node: '>= 0.8' + resolution: + integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + /destroy/1.0.4: + dev: true + resolution: + integrity: sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= + /duplexer/0.1.2: + dev: true + resolution: + integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== + /ee-first/1.1.1: + dev: true + resolution: + integrity: sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= + /encodeurl/1.0.2: + dev: true + engines: + node: '>= 0.8' + resolution: + integrity: sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= + /escape-html/1.0.3: + dev: true + resolution: + integrity: sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= + /etag/1.8.1: + dev: true + engines: + node: '>= 0.6' + resolution: + integrity: sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= + /event-stream/3.3.4: + dependencies: + duplexer: 0.1.2 + from: 0.1.7 + map-stream: 0.1.0 + pause-stream: 0.0.11 + split: 0.3.3 + stream-combiner: 0.0.4 + through: 2.3.8 + dev: true + resolution: + integrity: sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE= + /expand-brackets/2.1.4: + dependencies: + debug: 2.6.9 + define-property: 0.2.5 + extend-shallow: 2.0.1 + posix-character-classes: 0.1.1 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-t3c14xXOMPa27/D4OwQVGiJEliI= + /extend-shallow/2.0.1: + dependencies: + is-extendable: 0.1.1 + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= + /extend-shallow/3.0.2: + dependencies: + assign-symbols: 1.0.0 + is-extendable: 1.0.1 + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= + /extglob/2.0.4: + dependencies: + array-unique: 0.3.2 + define-property: 1.0.0 + expand-brackets: 2.1.4 + extend-shallow: 2.0.1 + fragment-cache: 0.2.1 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== + /faye-websocket/0.11.3: + dependencies: + websocket-driver: 0.7.4 + dev: true + engines: + node: '>=0.8.0' + resolution: + integrity: sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA== + /file-uri-to-path/1.0.0: + dev: true + optional: true + resolution: + integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== + /fill-range/4.0.0: + dependencies: + extend-shallow: 2.0.1 + is-number: 3.0.0 + repeat-string: 1.6.1 + to-regex-range: 2.1.1 + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= + /finalhandler/1.1.2: + dependencies: + debug: 2.6.9 + encodeurl: 1.0.2 + escape-html: 1.0.3 + on-finished: 2.3.0 + parseurl: 1.3.3 + statuses: 1.5.0 + unpipe: 1.0.0 + dev: true + engines: + node: '>= 0.8' + resolution: + integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== + /for-in/1.0.2: + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= + /fragment-cache/0.2.1: + dependencies: + map-cache: 0.2.2 + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= + /fresh/0.5.2: + dev: true + engines: + node: '>= 0.6' + resolution: + integrity: sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= + /from/0.1.7: + dev: true + resolution: + integrity: sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4= + /fsevents/1.2.13: + dependencies: + bindings: 1.5.0 + nan: 2.14.2 + deprecated: fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2. + dev: true + engines: + node: '>= 4.0' + optional: true + os: + - darwin + requiresBuild: true + resolution: + integrity: sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== + /get-value/2.0.6: + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= + /glob-parent/3.1.0: + dependencies: + is-glob: 3.1.0 + path-dirname: 1.0.2 + dev: true + resolution: + integrity: sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= + /graceful-fs/4.2.4: + dev: true + resolution: + integrity: sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== + /has-value/0.3.1: + dependencies: + get-value: 2.0.6 + has-values: 0.1.4 + isobject: 2.1.0 + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= + /has-value/1.0.0: + dependencies: + get-value: 2.0.6 + has-values: 1.0.0 + isobject: 3.0.1 + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= + /has-values/0.1.4: + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-bWHeldkd/Km5oCCJrThL/49it3E= + /has-values/1.0.0: + dependencies: + is-number: 3.0.0 + kind-of: 4.0.0 + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= + /http-auth/3.1.3: + dependencies: + apache-crypt: 1.2.4 + apache-md5: 1.1.5 + bcryptjs: 2.4.3 + uuid: 3.4.0 + dev: true + engines: + node: '>=4.6.1' + resolution: + integrity: sha1-lFz63WZSHq+PfISRPTd9exXyTjE= + /http-errors/1.6.3: + dependencies: + depd: 1.1.2 + inherits: 2.0.3 + setprototypeof: 1.1.0 + statuses: 1.5.0 + dev: true + engines: + node: '>= 0.6' + resolution: + integrity: sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= + /http-errors/1.7.3: + dependencies: + depd: 1.1.2 + inherits: 2.0.4 + setprototypeof: 1.1.1 + statuses: 1.5.0 + toidentifier: 1.0.0 + dev: true + engines: + node: '>= 0.6' + resolution: + integrity: sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== + /http-parser-js/0.5.2: + dev: true + resolution: + integrity: sha512-opCO9ASqg5Wy2FNo7A0sxy71yGbbkJJXLdgMK04Tcypw9jr2MgWbyubb0+WdmDmGnFflO7fRbqbaihh/ENDlRQ== + /inherits/2.0.3: + dev: true + resolution: + integrity: sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= + /inherits/2.0.4: + dev: true + resolution: + integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + /is-accessor-descriptor/0.1.6: + dependencies: + kind-of: 3.2.2 + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= + /is-accessor-descriptor/1.0.0: + dependencies: + kind-of: 6.0.3 + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== + /is-binary-path/1.0.1: + dependencies: + binary-extensions: 1.13.1 + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= + /is-buffer/1.1.6: + dev: true + resolution: + integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== + /is-data-descriptor/0.1.4: + dependencies: + kind-of: 3.2.2 + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= + /is-data-descriptor/1.0.0: + dependencies: + kind-of: 6.0.3 + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== + /is-descriptor/0.1.6: + dependencies: + is-accessor-descriptor: 0.1.6 + is-data-descriptor: 0.1.4 + kind-of: 5.1.0 + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== + /is-descriptor/1.0.2: + dependencies: + is-accessor-descriptor: 1.0.0 + is-data-descriptor: 1.0.0 + kind-of: 6.0.3 + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== + /is-extendable/0.1.1: + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= + /is-extendable/1.0.1: + dependencies: + is-plain-object: 2.0.4 + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== + /is-extglob/2.1.1: + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= + /is-glob/3.1.0: + dependencies: + is-extglob: 2.1.1 + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= + /is-glob/4.0.1: + dependencies: + is-extglob: 2.1.1 + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== + /is-number/3.0.0: + dependencies: + kind-of: 3.2.2 + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= + /is-plain-object/2.0.4: + dependencies: + isobject: 3.0.1 + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + /is-windows/1.0.2: + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== + /is-wsl/1.1.0: + dev: true + engines: + node: '>=4' + resolution: + integrity: sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= + /isarray/1.0.0: + dev: true + resolution: + integrity: sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= + /isobject/2.1.0: + dependencies: + isarray: 1.0.0 + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= + /isobject/3.0.1: + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-TkMekrEalzFjaqH5yNHMvP2reN8= + /kind-of/3.2.2: + dependencies: + is-buffer: 1.1.6 + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= + /kind-of/4.0.0: + dependencies: + is-buffer: 1.1.6 + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-IIE989cSkosgc3hpGkUGb65y3Vc= + /kind-of/5.1.0: + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== + /kind-of/6.0.3: + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + /live-server/1.2.1: + dependencies: + chokidar: 2.1.8 + colors: 1.4.0 + connect: 3.7.0 + cors: 2.8.5 + event-stream: 3.3.4 + faye-websocket: 0.11.3 + http-auth: 3.1.3 + morgan: 1.10.0 + object-assign: 4.1.1 + opn: 6.0.0 + proxy-middleware: 0.15.0 + send: 0.17.1 + serve-index: 1.9.1 + dev: true + engines: + node: '>=0.10.0' + hasBin: true + resolution: + integrity: sha512-Yn2XCVjErTkqnM3FfTmM7/kWy3zP7+cEtC7x6u+wUzlQ+1UW3zEYbbyJrc0jNDwiMDZI0m4a0i3dxlGHVyXczw== + /map-cache/0.2.2: + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= + /map-stream/0.1.0: + dev: true + resolution: + integrity: sha1-5WqpTEyAVaFkBKBnS3jyFffI4ZQ= + /map-visit/1.0.0: + dependencies: + object-visit: 1.0.1 + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= + /micromatch/3.1.10: + dependencies: + arr-diff: 4.0.0 + array-unique: 0.3.2 + braces: 2.3.2 + define-property: 2.0.2 + extend-shallow: 3.0.2 + extglob: 2.0.4 + fragment-cache: 0.2.1 + kind-of: 6.0.3 + nanomatch: 1.2.13 + object.pick: 1.3.0 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== + /mime-db/1.44.0: + dev: true + engines: + node: '>= 0.6' + resolution: + integrity: sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg== + /mime-types/2.1.27: + dependencies: + mime-db: 1.44.0 + dev: true + engines: + node: '>= 0.6' + resolution: + integrity: sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w== + /mime/1.6.0: + dev: true + engines: + node: '>=4' + hasBin: true + resolution: + integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + /mixin-deep/1.3.2: + dependencies: + for-in: 1.0.2 + is-extendable: 1.0.1 + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== + /morgan/1.10.0: + dependencies: + basic-auth: 2.0.1 + debug: 2.6.9 + depd: 2.0.0 + on-finished: 2.3.0 + on-headers: 1.0.2 + dev: true + engines: + node: '>= 0.8.0' + resolution: + integrity: sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ== + /ms/2.0.0: + dev: true + resolution: + integrity: sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= + /ms/2.1.1: + dev: true + resolution: + integrity: sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== + /nan/2.14.2: + dev: true + optional: true + resolution: + integrity: sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ== + /nanomatch/1.2.13: + dependencies: + arr-diff: 4.0.0 + array-unique: 0.3.2 + define-property: 2.0.2 + extend-shallow: 3.0.2 + fragment-cache: 0.2.1 + is-windows: 1.0.2 + kind-of: 6.0.3 + object.pick: 1.3.0 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== + /negotiator/0.6.2: + dev: true + engines: + node: '>= 0.6' + resolution: + integrity: sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== + /normalize-path/2.1.1: + dependencies: + remove-trailing-separator: 1.1.0 + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= + /normalize-path/3.0.0: + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + /object-assign/4.1.1: + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= + /object-copy/0.1.0: + dependencies: + copy-descriptor: 0.1.1 + define-property: 0.2.5 + kind-of: 3.2.2 + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-fn2Fi3gb18mRpBupde04EnVOmYw= + /object-visit/1.0.1: + dependencies: + isobject: 3.0.1 + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= + /object.pick/1.3.0: + dependencies: + isobject: 3.0.1 + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= + /on-finished/2.3.0: + dependencies: + ee-first: 1.1.1 + dev: true + engines: + node: '>= 0.8' + resolution: + integrity: sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= + /on-headers/1.0.2: + dev: true + engines: + node: '>= 0.8' + resolution: + integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== + /opn/6.0.0: + dependencies: + is-wsl: 1.1.0 + deprecated: The package has been renamed to `open` + dev: true engines: node: '>=8' resolution: - integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + integrity: sha512-I9PKfIZC+e4RXZ/qr1RhgyCnGgYX0UEIlXgWnCOVACIvFgaC9rz6Won7xbdhoHrd8IIhV7YEpHjreNUNkqCGkQ== + /parseurl/1.3.3: + dev: true + engines: + node: '>= 0.8' + resolution: + integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + /pascalcase/0.1.1: + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= + /path-dirname/1.0.2: + dev: true + resolution: + integrity: sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= + /path-is-absolute/1.0.1: + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + /pause-stream/0.0.11: + dependencies: + through: 2.3.8 + dev: true + resolution: + integrity: sha1-/lo0sMvOErWqaitAPuLnO2AvFEU= + /posix-character-classes/0.1.1: + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= + /process-nextick-args/2.0.1: + dev: true + resolution: + integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + /proxy-middleware/0.15.0: + dev: true + engines: + node: '>=0.8.0' + resolution: + integrity: sha1-o/3xvvtzD5UZZYcqwvYHTGFHelY= + /range-parser/1.2.1: + dev: true + engines: + node: '>= 0.6' + resolution: + integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + /readable-stream/2.3.7: + dependencies: + core-util-is: 1.0.2 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + dev: true + resolution: + integrity: sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== + /readdirp/2.2.1: + dependencies: + graceful-fs: 4.2.4 + micromatch: 3.1.10 + readable-stream: 2.3.7 + dev: true + engines: + node: '>=0.10' + resolution: + integrity: sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== + /regex-not/1.0.2: + dependencies: + extend-shallow: 3.0.2 + safe-regex: 1.1.0 + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== + /remove-trailing-separator/1.1.0: + dev: true + resolution: + integrity: sha1-wkvOKig62tW8P1jg1IJJuSN52O8= + /repeat-element/1.1.3: + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== + /repeat-string/1.6.1: + dev: true + engines: + node: '>=0.10' + resolution: + integrity: sha1-jcrkcOHIirwtYA//Sndihtp15jc= + /resolve-url/0.2.1: + deprecated: 'https://github.com/lydell/resolve-url#deprecated' + dev: true + resolution: + integrity: sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= + /ret/0.1.15: + dev: true + engines: + node: '>=0.12' + resolution: + integrity: sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== + /safe-buffer/5.1.2: + dev: true + resolution: + integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + /safe-buffer/5.2.1: + dev: true + resolution: + integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + /safe-regex/1.1.0: + dependencies: + ret: 0.1.15 + dev: true + resolution: + integrity: sha1-QKNmnzsHfR6UPURinhV91IAjvy4= + /send/0.17.1: + dependencies: + debug: 2.6.9 + depd: 1.1.2 + destroy: 1.0.4 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 0.5.2 + http-errors: 1.7.3 + mime: 1.6.0 + ms: 2.1.1 + on-finished: 2.3.0 + range-parser: 1.2.1 + statuses: 1.5.0 + dev: true + engines: + node: '>= 0.8.0' + resolution: + integrity: sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== + /serve-index/1.9.1: + dependencies: + accepts: 1.3.7 + batch: 0.6.1 + debug: 2.6.9 + escape-html: 1.0.3 + http-errors: 1.6.3 + mime-types: 2.1.27 + parseurl: 1.3.3 + dev: true + engines: + node: '>= 0.8.0' + resolution: + integrity: sha1-03aNabHn2C5c4FD/9bRTvqEqkjk= + /set-value/2.0.1: + dependencies: + extend-shallow: 2.0.1 + is-extendable: 0.1.1 + is-plain-object: 2.0.4 + split-string: 3.1.0 + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== + /setprototypeof/1.1.0: + dev: true + resolution: + integrity: sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== + /setprototypeof/1.1.1: + dev: true + resolution: + integrity: sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== + /snapdragon-node/2.1.1: + dependencies: + define-property: 1.0.0 + isobject: 3.0.1 + snapdragon-util: 3.0.1 + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== + /snapdragon-util/3.0.1: + dependencies: + kind-of: 3.2.2 + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== + /snapdragon/0.8.2: + dependencies: + base: 0.11.2 + debug: 2.6.9 + define-property: 0.2.5 + extend-shallow: 2.0.1 + map-cache: 0.2.2 + source-map: 0.5.7 + source-map-resolve: 0.5.3 + use: 3.1.1 + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== + /source-map-resolve/0.5.3: + dependencies: + atob: 2.1.2 + decode-uri-component: 0.2.0 + resolve-url: 0.2.1 + source-map-url: 0.4.0 + urix: 0.1.0 + dev: true + resolution: + integrity: sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== + /source-map-url/0.4.0: + dev: true + resolution: + integrity: sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= + /source-map/0.5.7: + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= + /split-string/3.1.0: + dependencies: + extend-shallow: 3.0.2 + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== + /split/0.3.3: + dependencies: + through: 2.3.8 + dev: true + resolution: + integrity: sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8= + /static-extend/0.1.2: + dependencies: + define-property: 0.2.5 + object-copy: 0.1.0 + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= + /statuses/1.5.0: + dev: true + engines: + node: '>= 0.6' + resolution: + integrity: sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= + /stream-combiner/0.0.4: + dependencies: + duplexer: 0.1.2 + dev: true + resolution: + integrity: sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ= + /string_decoder/1.1.1: + dependencies: + safe-buffer: 5.1.2 + dev: true + resolution: + integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + /through/2.3.8: + dev: true + resolution: + integrity: sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= + /to-object-path/0.3.0: + dependencies: + kind-of: 3.2.2 + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= + /to-regex-range/2.1.1: + dependencies: + is-number: 3.0.0 + repeat-string: 1.6.1 + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= + /to-regex/3.0.2: + dependencies: + define-property: 2.0.2 + extend-shallow: 3.0.2 + regex-not: 1.0.2 + safe-regex: 1.1.0 + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== + /toidentifier/1.0.0: + dev: true + engines: + node: '>=0.6' + resolution: + integrity: sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== + /union-value/1.0.1: + dependencies: + arr-union: 3.1.0 + get-value: 2.0.6 + is-extendable: 0.1.1 + set-value: 2.0.1 + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== + /unix-crypt-td-js/1.1.4: + dev: true + resolution: + integrity: sha512-8rMeVYWSIyccIJscb9NdCfZKSRBKYTeVnwmiRYT2ulE3qd1RaDQ0xQDP+rI3ccIWbhu/zuo5cgN8z73belNZgw== + /unpipe/1.0.0: + dev: true + engines: + node: '>= 0.8' + resolution: + integrity: sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= + /unset-value/1.0.0: + dependencies: + has-value: 0.3.1 + isobject: 3.0.1 + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= + /upath/1.2.0: + dev: true + engines: + node: '>=4' + resolution: + integrity: sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== + /urix/0.1.0: + deprecated: 'Please see https://github.com/lydell/urix#deprecated' + dev: true + resolution: + integrity: sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= + /use/3.1.1: + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== + /util-deprecate/1.0.2: + dev: true + resolution: + integrity: sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + /utils-merge/1.0.1: + dev: true + engines: + node: '>= 0.4.0' + resolution: + integrity: sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= + /uuid/3.4.0: + dev: true + hasBin: true + resolution: + integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== + /vary/1.1.2: + dev: true + engines: + node: '>= 0.8' + resolution: + integrity: sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= + /websocket-driver/0.7.4: + dependencies: + http-parser-js: 0.5.2 + safe-buffer: 5.2.1 + websocket-extensions: 0.1.4 + dev: true + engines: + node: '>=0.8.0' + resolution: + integrity: sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== + /websocket-extensions/0.1.4: + dev: true + engines: + node: '>=0.8.0' + resolution: + integrity: sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== specifiers: - chalk: ^4.1.0 - node-fetch: ^2.6.1 - readline-promise: ^1.0.4 + live-server: ^1.2.1 diff --git a/javascript/quizizz-hack/style.css b/javascript/quizizz-hack/style.css new file mode 100644 index 0000000..1415f95 --- /dev/null +++ b/javascript/quizizz-hack/style.css @@ -0,0 +1,41 @@ +body, +html { + height: 100%; + padding: 0; + margin: 0; + background: #241b2f; +} + +#input-container { + color: white; + padding: 1rem; + font-size: 1.7rem; + display: flex; + align-items: center; +} + +#id { + margin: 1rem; + padding: 0.5rem; + background: transparent; + border: 1px solid white; + outline: none; + color: white; +} + +.question-container { + padding: 0.7rem; +} + +.question-container .question { + color: #1ad6d9; +} + +.question-container .answer { + margin-top: 0.5rem; + color: #23e30e; +} + +.answer.answer-single { + margin-left: 1.5rem; +} From d886691a80aa99aea91bf6165e416b37f8171442 Mon Sep 17 00:00:00 2001 From: Matei Adriel Date: Thu, 5 Nov 2020 10:03:31 +0200 Subject: [PATCH 3/5] javascript(quizizz-hack): feat: image support Signed-off-by: prescientmoon --- javascript/quizizz-hack/entry.js | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/javascript/quizizz-hack/entry.js b/javascript/quizizz-hack/entry.js index e18b0be..6fc218e 100644 --- a/javascript/quizizz-hack/entry.js +++ b/javascript/quizizz-hack/entry.js @@ -42,7 +42,10 @@ function parseQuestions(fileObject) { answer = question.structure.options.map((o) => removeTags(o.text)); } - const questionStr = removeTags(question.structure.query.text); + const questionStr = + question.structure.query.text === "" + ? question.structure.query.media[0].url + : removeTags(question.structure.query.text); allAnswers[questionStr] = answer; } @@ -65,6 +68,8 @@ async function main(id) { const sorted = Object.entries(answers).sort(); + console.log(answers); + render(renderQuestions(sorted), rootElement); } @@ -77,13 +82,15 @@ inputElement.addEventListener("keypress", (e) => { } }); -console.log("here"); - const renderQuestions = (questions) => { return html`${questions.map(([question, answer]) => { return html`
-
${question}
+
+ ${question.startsWith("http") + ? html`` + : question} +
${Array.isArray(answer) ? html`
    From e16300d0a0c84b5a55ec96fb14b7f532a324713c Mon Sep 17 00:00:00 2001 From: Matei Adriel Date: Thu, 5 Nov 2020 10:33:06 +0200 Subject: [PATCH 4/5] javascript(quizizz-hack): feat: removed yet another tag Signed-off-by: prescientmoon --- javascript/quizizz-hack/entry.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/javascript/quizizz-hack/entry.js b/javascript/quizizz-hack/entry.js index 6fc218e..d472c75 100644 --- a/javascript/quizizz-hack/entry.js +++ b/javascript/quizizz-hack/entry.js @@ -1,6 +1,6 @@ import { render, html } from "https://cdn.skypack.dev/lit-html"; -const tags = ["p", "strong", "em", "sub", "sup", "span", "br"]; +const tags = ["p", "strong", "em", "sub", "sup", "span", "br", "sub"]; function removeTags(input) { let copy = input.replace('"', '\\"'); From 21e92f2764352cd422aac80ebf3de6d37ed4771a Mon Sep 17 00:00:00 2001 From: prescientmoon Date: Tue, 28 May 2024 01:50:57 +0200 Subject: [PATCH 5/5] javascript(quizizz-hack): Added movement notice to readme [skip-ci] Signed-off-by: prescientmoon --- javascript/quizizz-hack/README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 javascript/quizizz-hack/README.md diff --git a/javascript/quizizz-hack/README.md b/javascript/quizizz-hack/README.md new file mode 100644 index 0000000..4250ae2 --- /dev/null +++ b/javascript/quizizz-hack/README.md @@ -0,0 +1 @@ +# 🚧 This repo has been moved to [prescientmoon/quizz-hack](https://github.com/prescientmoon/quizz-hack) 🚧