quiz-mcp 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (114) hide show
  1. package/README.md +85 -0
  2. package/bin/quiz +16 -0
  3. package/bin/quiz-runner +18 -0
  4. package/bin/quiz-runner-mcp +18 -0
  5. package/dist/cli.js +805 -0
  6. package/dist/client/_app/immutable/assets/0.BdUfdP7M.css +1 -0
  7. package/dist/client/_app/immutable/assets/0.BdUfdP7M.css.br +0 -0
  8. package/dist/client/_app/immutable/assets/0.BdUfdP7M.css.gz +0 -0
  9. package/dist/client/_app/immutable/chunks/BBbVH-DX.js +2 -0
  10. package/dist/client/_app/immutable/chunks/BBbVH-DX.js.br +0 -0
  11. package/dist/client/_app/immutable/chunks/BBbVH-DX.js.gz +0 -0
  12. package/dist/client/_app/immutable/chunks/BYAtt_Gu.js +1 -0
  13. package/dist/client/_app/immutable/chunks/BYAtt_Gu.js.br +0 -0
  14. package/dist/client/_app/immutable/chunks/BYAtt_Gu.js.gz +0 -0
  15. package/dist/client/_app/immutable/chunks/C9b1VZtB.js +1 -0
  16. package/dist/client/_app/immutable/chunks/C9b1VZtB.js.br +0 -0
  17. package/dist/client/_app/immutable/chunks/C9b1VZtB.js.gz +0 -0
  18. package/dist/client/_app/immutable/chunks/DnSqigra.js +1 -0
  19. package/dist/client/_app/immutable/chunks/DnSqigra.js.br +0 -0
  20. package/dist/client/_app/immutable/chunks/DnSqigra.js.gz +0 -0
  21. package/dist/client/_app/immutable/chunks/DqHG5Xll.js +3 -0
  22. package/dist/client/_app/immutable/chunks/DqHG5Xll.js.br +0 -0
  23. package/dist/client/_app/immutable/chunks/DqHG5Xll.js.gz +0 -0
  24. package/dist/client/_app/immutable/chunks/fMaWj-vy.js +1 -0
  25. package/dist/client/_app/immutable/chunks/fMaWj-vy.js.br +0 -0
  26. package/dist/client/_app/immutable/chunks/fMaWj-vy.js.gz +0 -0
  27. package/dist/client/_app/immutable/chunks/hqRb622q.js +1 -0
  28. package/dist/client/_app/immutable/chunks/hqRb622q.js.br +0 -0
  29. package/dist/client/_app/immutable/chunks/hqRb622q.js.gz +0 -0
  30. package/dist/client/_app/immutable/chunks/qgn7L4n5.js +1 -0
  31. package/dist/client/_app/immutable/chunks/qgn7L4n5.js.br +0 -0
  32. package/dist/client/_app/immutable/chunks/qgn7L4n5.js.gz +0 -0
  33. package/dist/client/_app/immutable/entry/app.BsKq4Thd.js +2 -0
  34. package/dist/client/_app/immutable/entry/app.BsKq4Thd.js.br +0 -0
  35. package/dist/client/_app/immutable/entry/app.BsKq4Thd.js.gz +0 -0
  36. package/dist/client/_app/immutable/entry/start.CKTlgCvu.js +1 -0
  37. package/dist/client/_app/immutable/entry/start.CKTlgCvu.js.br +2 -0
  38. package/dist/client/_app/immutable/entry/start.CKTlgCvu.js.gz +0 -0
  39. package/dist/client/_app/immutable/nodes/0.R6s8931r.js +9 -0
  40. package/dist/client/_app/immutable/nodes/0.R6s8931r.js.br +0 -0
  41. package/dist/client/_app/immutable/nodes/0.R6s8931r.js.gz +0 -0
  42. package/dist/client/_app/immutable/nodes/1.CBs3iFLr.js +1 -0
  43. package/dist/client/_app/immutable/nodes/1.CBs3iFLr.js.br +0 -0
  44. package/dist/client/_app/immutable/nodes/1.CBs3iFLr.js.gz +0 -0
  45. package/dist/client/_app/immutable/nodes/2.B9MLTE_H.js +2 -0
  46. package/dist/client/_app/immutable/nodes/2.B9MLTE_H.js.br +0 -0
  47. package/dist/client/_app/immutable/nodes/2.B9MLTE_H.js.gz +0 -0
  48. package/dist/client/_app/immutable/nodes/3.w4AbulQF.js +1 -0
  49. package/dist/client/_app/immutable/nodes/3.w4AbulQF.js.br +0 -0
  50. package/dist/client/_app/immutable/nodes/3.w4AbulQF.js.gz +0 -0
  51. package/dist/client/_app/immutable/nodes/4.BAhm-aFq.js +4 -0
  52. package/dist/client/_app/immutable/nodes/4.BAhm-aFq.js.br +0 -0
  53. package/dist/client/_app/immutable/nodes/4.BAhm-aFq.js.gz +0 -0
  54. package/dist/client/_app/version.json +1 -0
  55. package/dist/client/_app/version.json.br +0 -0
  56. package/dist/client/_app/version.json.gz +0 -0
  57. package/dist/client/robots.txt +3 -0
  58. package/dist/env.js +94 -0
  59. package/dist/handler.js +1435 -0
  60. package/dist/index.js +345 -0
  61. package/dist/server/chunks/0-bFxjafp8.js +44 -0
  62. package/dist/server/chunks/0-bFxjafp8.js.map +1 -0
  63. package/dist/server/chunks/1-D1qe0uHb.js +9 -0
  64. package/dist/server/chunks/1-D1qe0uHb.js.map +1 -0
  65. package/dist/server/chunks/2-NzZFDUaQ.js +60 -0
  66. package/dist/server/chunks/2-NzZFDUaQ.js.map +1 -0
  67. package/dist/server/chunks/3-DJAG62O1.js +37 -0
  68. package/dist/server/chunks/3-DJAG62O1.js.map +1 -0
  69. package/dist/server/chunks/4-zigWBLLG.js +37 -0
  70. package/dist/server/chunks/4-zigWBLLG.js.map +1 -0
  71. package/dist/server/chunks/_error.svelte-BHNrphys.js +80 -0
  72. package/dist/server/chunks/_error.svelte-BHNrphys.js.map +1 -0
  73. package/dist/server/chunks/_layout.svelte-BUJDEr5D.js +104 -0
  74. package/dist/server/chunks/_layout.svelte-BUJDEr5D.js.map +1 -0
  75. package/dist/server/chunks/_page.svelte-CRU5jaGZ.js +653 -0
  76. package/dist/server/chunks/_page.svelte-CRU5jaGZ.js.map +1 -0
  77. package/dist/server/chunks/_page.svelte-Cm8ocLsi.js +572 -0
  78. package/dist/server/chunks/_page.svelte-Cm8ocLsi.js.map +1 -0
  79. package/dist/server/chunks/_page.svelte-Dvh1k6R9.js +71 -0
  80. package/dist/server/chunks/_page.svelte-Dvh1k6R9.js.map +1 -0
  81. package/dist/server/chunks/_server.ts-BZp77VsF.js +101 -0
  82. package/dist/server/chunks/_server.ts-BZp77VsF.js.map +1 -0
  83. package/dist/server/chunks/_server.ts-C2NKc-VD.js +219 -0
  84. package/dist/server/chunks/_server.ts-C2NKc-VD.js.map +1 -0
  85. package/dist/server/chunks/_server.ts-CHyNcOmK.js +39 -0
  86. package/dist/server/chunks/_server.ts-CHyNcOmK.js.map +1 -0
  87. package/dist/server/chunks/_server.ts-CakPvrry.js +51 -0
  88. package/dist/server/chunks/_server.ts-CakPvrry.js.map +1 -0
  89. package/dist/server/chunks/_server.ts-uSNr19lE.js +35 -0
  90. package/dist/server/chunks/_server.ts-uSNr19lE.js.map +1 -0
  91. package/dist/server/chunks/client-Dw0t4rDL.js +25 -0
  92. package/dist/server/chunks/client-Dw0t4rDL.js.map +1 -0
  93. package/dist/server/chunks/exports-BNC8dbq3.js +326 -0
  94. package/dist/server/chunks/exports-BNC8dbq3.js.map +1 -0
  95. package/dist/server/chunks/hooks.server-B6FrjICA.js +66 -0
  96. package/dist/server/chunks/hooks.server-B6FrjICA.js.map +1 -0
  97. package/dist/server/chunks/hooks.universal-B3lncnqn.js +6 -0
  98. package/dist/server/chunks/hooks.universal-B3lncnqn.js.map +1 -0
  99. package/dist/server/chunks/html-FW6Ia4bL.js +8 -0
  100. package/dist/server/chunks/html-FW6Ia4bL.js.map +1 -0
  101. package/dist/server/chunks/index-Ch5Bqlgz.js +1411 -0
  102. package/dist/server/chunks/index-Ch5Bqlgz.js.map +1 -0
  103. package/dist/server/chunks/index-wpIsICWW.js +219 -0
  104. package/dist/server/chunks/index-wpIsICWW.js.map +1 -0
  105. package/dist/server/chunks/runtime-Bf5HkYyl.js +318 -0
  106. package/dist/server/chunks/runtime-Bf5HkYyl.js.map +1 -0
  107. package/dist/server/chunks/sessions-CEbRx2vt.js +169 -0
  108. package/dist/server/chunks/sessions-CEbRx2vt.js.map +1 -0
  109. package/dist/server/index.js +7609 -0
  110. package/dist/server/index.js.map +1 -0
  111. package/dist/server/manifest.js +97 -0
  112. package/dist/server/manifest.js.map +1 -0
  113. package/dist/shims.js +32 -0
  114. package/package.json +122 -0
@@ -0,0 +1,71 @@
1
+ import { O as head, Q as escape_html } from './index-Ch5Bqlgz.js';
2
+ import './client-Dw0t4rDL.js';
3
+ import './exports-BNC8dbq3.js';
4
+
5
+ function _page($$renderer, $$props) {
6
+ $$renderer.component(($$renderer2) => {
7
+ let { data } = $$props;
8
+ const quizId = data.quizId;
9
+ const sessionId = data.sessionId;
10
+ const status = data.status;
11
+ const quizTitle = data.quiz?.title || "Quiz";
12
+ let statusMessage = status === "expired" ? "This quiz session has expired and is no longer available." : status === "completed" ? "This quiz has already been completed." : "Quiz session not found.";
13
+ head("9bskx5", $$renderer2, ($$renderer3) => {
14
+ $$renderer3.title(($$renderer4) => {
15
+ $$renderer4.push(`<title>Session ${escape_html(status)} - Quiz MCP</title>`);
16
+ });
17
+ });
18
+ $$renderer2.push(`<div class="flex min-h-screen items-center justify-center bg-base-200 p-4"><div class="card w-full max-w-lg bg-base-100 shadow-xl"><div class="card-body text-center"><div class="mb-6 flex justify-center">`);
19
+ if (status === "expired") {
20
+ $$renderer2.push("<!--[-->");
21
+ $$renderer2.push(`<div class="flex h-24 w-24 items-center justify-center rounded-full bg-warning/20"><svg xmlns="http://www.w3.org/2000/svg" class="h-14 w-14 text-warning" fill="none" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"></path></svg></div>`);
22
+ } else {
23
+ $$renderer2.push("<!--[!-->");
24
+ if (status === "completed") {
25
+ $$renderer2.push("<!--[-->");
26
+ $$renderer2.push(`<div class="flex h-24 w-24 items-center justify-center rounded-full bg-success/20"><svg xmlns="http://www.w3.org/2000/svg" class="h-14 w-14 text-success" fill="none" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"></path></svg></div>`);
27
+ } else {
28
+ $$renderer2.push("<!--[!-->");
29
+ $$renderer2.push(`<div class="flex h-24 w-24 items-center justify-center rounded-full bg-error/20"><svg xmlns="http://www.w3.org/2000/svg" class="h-14 w-14 text-error" fill="none" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9.172 16.172a4 4 0 015.656 0M9 10h.01M15 10h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"></path></svg></div>`);
30
+ }
31
+ $$renderer2.push(`<!--]-->`);
32
+ }
33
+ $$renderer2.push(`<!--]--></div> <h1 class="text-4xl font-bold">`);
34
+ if (status === "expired") {
35
+ $$renderer2.push("<!--[-->");
36
+ $$renderer2.push(`Session Expired`);
37
+ } else {
38
+ $$renderer2.push("<!--[!-->");
39
+ if (status === "completed") {
40
+ $$renderer2.push("<!--[-->");
41
+ $$renderer2.push(`Already Completed`);
42
+ } else {
43
+ $$renderer2.push("<!--[!-->");
44
+ $$renderer2.push(`Not Found`);
45
+ }
46
+ $$renderer2.push(`<!--]-->`);
47
+ }
48
+ $$renderer2.push(`<!--]--></h1> <h2 class="mt-2 text-xl text-base-content/70">${escape_html(quizTitle)}</h2> <p class="mt-4 text-base-content/70">${escape_html(statusMessage)}</p> <div class="mt-6 rounded-lg bg-base-200 p-4"><div class="grid grid-cols-2 gap-4 text-sm"><div><span class="text-base-content/50">Quiz ID:</span> <code class="ml-2 block font-mono text-xs break-all">${escape_html(quizId)}</code></div> <div><span class="text-base-content/50">Session ID:</span> <code class="ml-2 block font-mono text-xs break-all">${escape_html(sessionId)}</code></div></div></div> <div class="mt-6 card-actions justify-center"><a href="/" class="btn btn-primary"><svg xmlns="http://www.w3.org/2000/svg" class="h-5 w-5" fill="none" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6"></path></svg> Go Home</a> <button type="button" class="btn btn-ghost">Go Back</button></div> <p class="mt-4 text-sm text-base-content/50">`);
49
+ if (status === "expired") {
50
+ $$renderer2.push("<!--[-->");
51
+ $$renderer2.push(`The session has expired due to inactivity. Please contact the quiz administrator to
52
+ request a new session.`);
53
+ } else {
54
+ $$renderer2.push("<!--[!-->");
55
+ if (status === "completed") {
56
+ $$renderer2.push("<!--[-->");
57
+ $$renderer2.push(`You have already completed this quiz. If you believe this is an error, please contact the
58
+ quiz administrator.`);
59
+ } else {
60
+ $$renderer2.push("<!--[!-->");
61
+ $$renderer2.push(`The requested quiz session could not be found. It may have been removed or the URL may be
62
+ incorrect.`);
63
+ }
64
+ $$renderer2.push(`<!--]-->`);
65
+ }
66
+ $$renderer2.push(`<!--]--></p></div></div></div>`);
67
+ });
68
+ }
69
+
70
+ export { _page as default };
71
+ //# sourceMappingURL=_page.svelte-Dvh1k6R9.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_page.svelte-Dvh1k6R9.js","sources":["../../../.svelte-kit/adapter-node/entries/pages/_quizId_/_sessionId_/expired/_page.svelte.js"],"sourcesContent":["import { J as head, z as escape_html } from \"../../../../../chunks/index.js\";\nimport \"../../../../../chunks/client.js\";\nfunction _page($$renderer, $$props) {\n $$renderer.component(($$renderer2) => {\n let { data } = $$props;\n const quizId = data.quizId;\n const sessionId = data.sessionId;\n const status = data.status;\n const quizTitle = data.quiz?.title || \"Quiz\";\n let statusMessage = status === \"expired\" ? \"This quiz session has expired and is no longer available.\" : status === \"completed\" ? \"This quiz has already been completed.\" : \"Quiz session not found.\";\n head(\"9bskx5\", $$renderer2, ($$renderer3) => {\n $$renderer3.title(($$renderer4) => {\n $$renderer4.push(`<title>Session ${escape_html(status)} - Quiz MCP</title>`);\n });\n });\n $$renderer2.push(`<div class=\"flex min-h-screen items-center justify-center bg-base-200 p-4\"><div class=\"card w-full max-w-lg bg-base-100 shadow-xl\"><div class=\"card-body text-center\"><div class=\"mb-6 flex justify-center\">`);\n if (status === \"expired\") {\n $$renderer2.push(\"<!--[-->\");\n $$renderer2.push(`<div class=\"flex h-24 w-24 items-center justify-center rounded-full bg-warning/20\"><svg xmlns=\"http://www.w3.org/2000/svg\" class=\"h-14 w-14 text-warning\" fill=\"none\" viewBox=\"0 0 24 24\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z\"></path></svg></div>`);\n } else {\n $$renderer2.push(\"<!--[!-->\");\n if (status === \"completed\") {\n $$renderer2.push(\"<!--[-->\");\n $$renderer2.push(`<div class=\"flex h-24 w-24 items-center justify-center rounded-full bg-success/20\"><svg xmlns=\"http://www.w3.org/2000/svg\" class=\"h-14 w-14 text-success\" fill=\"none\" viewBox=\"0 0 24 24\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z\"></path></svg></div>`);\n } else {\n $$renderer2.push(\"<!--[!-->\");\n $$renderer2.push(`<div class=\"flex h-24 w-24 items-center justify-center rounded-full bg-error/20\"><svg xmlns=\"http://www.w3.org/2000/svg\" class=\"h-14 w-14 text-error\" fill=\"none\" viewBox=\"0 0 24 24\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M9.172 16.172a4 4 0 015.656 0M9 10h.01M15 10h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z\"></path></svg></div>`);\n }\n $$renderer2.push(`<!--]-->`);\n }\n $$renderer2.push(`<!--]--></div> <h1 class=\"text-4xl font-bold\">`);\n if (status === \"expired\") {\n $$renderer2.push(\"<!--[-->\");\n $$renderer2.push(`Session Expired`);\n } else {\n $$renderer2.push(\"<!--[!-->\");\n if (status === \"completed\") {\n $$renderer2.push(\"<!--[-->\");\n $$renderer2.push(`Already Completed`);\n } else {\n $$renderer2.push(\"<!--[!-->\");\n $$renderer2.push(`Not Found`);\n }\n $$renderer2.push(`<!--]-->`);\n }\n $$renderer2.push(`<!--]--></h1> <h2 class=\"mt-2 text-xl text-base-content/70\">${escape_html(quizTitle)}</h2> <p class=\"mt-4 text-base-content/70\">${escape_html(statusMessage)}</p> <div class=\"mt-6 rounded-lg bg-base-200 p-4\"><div class=\"grid grid-cols-2 gap-4 text-sm\"><div><span class=\"text-base-content/50\">Quiz ID:</span> <code class=\"ml-2 block font-mono text-xs break-all\">${escape_html(quizId)}</code></div> <div><span class=\"text-base-content/50\">Session ID:</span> <code class=\"ml-2 block font-mono text-xs break-all\">${escape_html(sessionId)}</code></div></div></div> <div class=\"mt-6 card-actions justify-center\"><a href=\"/\" class=\"btn btn-primary\"><svg xmlns=\"http://www.w3.org/2000/svg\" class=\"h-5 w-5\" fill=\"none\" viewBox=\"0 0 24 24\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6\"></path></svg> Go Home</a> <button type=\"button\" class=\"btn btn-ghost\">Go Back</button></div> <p class=\"mt-4 text-sm text-base-content/50\">`);\n if (status === \"expired\") {\n $$renderer2.push(\"<!--[-->\");\n $$renderer2.push(`The session has expired due to inactivity. Please contact the quiz administrator to\n\t\t\t\t\trequest a new session.`);\n } else {\n $$renderer2.push(\"<!--[!-->\");\n if (status === \"completed\") {\n $$renderer2.push(\"<!--[-->\");\n $$renderer2.push(`You have already completed this quiz. If you believe this is an error, please contact the\n\t\t\t\t\tquiz administrator.`);\n } else {\n $$renderer2.push(\"<!--[!-->\");\n $$renderer2.push(`The requested quiz session could not be found. It may have been removed or the URL may be\n\t\t\t\t\tincorrect.`);\n }\n $$renderer2.push(`<!--]-->`);\n }\n $$renderer2.push(`<!--]--></p></div></div></div>`);\n });\n}\nexport {\n _page as default\n};\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,101 @@
1
+ import { j as json } from './index-wpIsICWW.js';
2
+ import { g as getSessionStore } from './sessions-CEbRx2vt.js';
3
+
4
+ const POST = async ({ params, request }) => {
5
+ const { quizId, sessionId } = params;
6
+ const store = getSessionStore();
7
+ const session = store.getSession(quizId, sessionId);
8
+ if (!session) {
9
+ return json(
10
+ {
11
+ ok: false,
12
+ error: "Session not found or expired"
13
+ },
14
+ { status: 404 }
15
+ );
16
+ }
17
+ if (session.status !== "active") {
18
+ return json(
19
+ {
20
+ ok: false,
21
+ error: `Session is already ${session.status}`
22
+ },
23
+ { status: 400 }
24
+ );
25
+ }
26
+ try {
27
+ const body = await request.json();
28
+ const answersRaw = body.answers;
29
+ const answers = answersRaw ? new Map(Object.entries(answersRaw).map(([k, v]) => [k, v])) : void 0;
30
+ if (answers) {
31
+ store.saveAnswers(quizId, sessionId, answers);
32
+ }
33
+ const totalTimeSpent = session.startedAt ? Math.floor((Date.now() - new Date(session.startedAt).getTime()) / 1e3) : 0;
34
+ const questions = session.quiz.questions;
35
+ const answeredCount = answers ? answers.size : 0;
36
+ const requiredQuestions = questions.filter((q) => q.required !== false);
37
+ const requiredAnswered = requiredQuestions.filter((q) => {
38
+ const a = answers?.get(q.id);
39
+ return a && a.value !== "" && (Array.isArray(a.value) ? a.value.length > 0 : true);
40
+ }).length;
41
+ const answersArray = questions.map((q) => {
42
+ const a = answers?.get(q.id);
43
+ return {
44
+ id: q.id,
45
+ type: q.type,
46
+ question: q.question,
47
+ value: a?.value ?? getEmptyAnswer(q.type),
48
+ timestamp: a?.timestamp ?? void 0
49
+ };
50
+ });
51
+ const results = {
52
+ quizId,
53
+ sessionId,
54
+ version: session.quiz.version ?? "1.0.0",
55
+ metadata: {
56
+ userAgent: request.headers.get("user-agent") ?? void 0,
57
+ timeSpent: totalTimeSpent,
58
+ completedAt: (/* @__PURE__ */ new Date()).toISOString()
59
+ },
60
+ answers: answersArray,
61
+ summary: {
62
+ totalQuestions: questions.length,
63
+ answeredQuestions: answeredCount,
64
+ requiredQuestions: requiredQuestions.length,
65
+ requiredAnswered
66
+ }
67
+ };
68
+ store.completeSession(quizId, sessionId, results);
69
+ return json({
70
+ ok: true,
71
+ results
72
+ });
73
+ } catch (error) {
74
+ console.error("Error submitting quiz:", error);
75
+ return json(
76
+ {
77
+ ok: false,
78
+ error: "Failed to submit quiz"
79
+ },
80
+ { status: 500 }
81
+ );
82
+ }
83
+ };
84
+ function getEmptyAnswer(type) {
85
+ switch (type) {
86
+ case "match":
87
+ return [];
88
+ case "text":
89
+ case "single":
90
+ return "";
91
+ case "multiple":
92
+ case "remove-extra":
93
+ case "order":
94
+ return [];
95
+ default:
96
+ return "";
97
+ }
98
+ }
99
+
100
+ export { POST };
101
+ //# sourceMappingURL=_server.ts-BZp77VsF.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_server.ts-BZp77VsF.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/quiz/_quizId_/session/_sessionId_/submit/_server.ts.js"],"sourcesContent":["import { json } from \"@sveltejs/kit\";\nimport { g as getSessionStore } from \"../../../../../../../../chunks/sessions.js\";\nconst POST = async ({ params, request }) => {\n const { quizId, sessionId } = params;\n const store = getSessionStore();\n const session = store.getSession(quizId, sessionId);\n if (!session) {\n return json(\n {\n ok: false,\n error: \"Session not found or expired\"\n },\n { status: 404 }\n );\n }\n if (session.status !== \"active\") {\n return json(\n {\n ok: false,\n error: `Session is already ${session.status}`\n },\n { status: 400 }\n );\n }\n try {\n const body = await request.json();\n const answersRaw = body.answers;\n const answers = answersRaw ? new Map(Object.entries(answersRaw).map(([k, v]) => [k, v])) : void 0;\n if (answers) {\n store.saveAnswers(quizId, sessionId, answers);\n }\n const totalTimeSpent = session.startedAt ? Math.floor((Date.now() - new Date(session.startedAt).getTime()) / 1e3) : 0;\n const questions = session.quiz.questions;\n const answeredCount = answers ? answers.size : 0;\n const requiredQuestions = questions.filter((q) => q.required !== false);\n const requiredAnswered = requiredQuestions.filter((q) => {\n const a = answers?.get(q.id);\n return a && a.value !== \"\" && (Array.isArray(a.value) ? a.value.length > 0 : true);\n }).length;\n const answersArray = questions.map((q) => {\n const a = answers?.get(q.id);\n return {\n id: q.id,\n type: q.type,\n question: q.question,\n value: a?.value ?? getEmptyAnswer(q.type),\n timestamp: a?.timestamp ?? void 0\n };\n });\n const results = {\n quizId,\n sessionId,\n version: session.quiz.version ?? \"1.0.0\",\n metadata: {\n userAgent: request.headers.get(\"user-agent\") ?? void 0,\n timeSpent: totalTimeSpent,\n completedAt: (/* @__PURE__ */ new Date()).toISOString()\n },\n answers: answersArray,\n summary: {\n totalQuestions: questions.length,\n answeredQuestions: answeredCount,\n requiredQuestions: requiredQuestions.length,\n requiredAnswered\n }\n };\n store.completeSession(quizId, sessionId, results);\n return json({\n ok: true,\n results\n });\n } catch (error) {\n console.error(\"Error submitting quiz:\", error);\n return json(\n {\n ok: false,\n error: \"Failed to submit quiz\"\n },\n { status: 500 }\n );\n }\n};\nfunction getEmptyAnswer(type) {\n switch (type) {\n case \"match\":\n return [];\n case \"text\":\n case \"single\":\n return \"\";\n case \"multiple\":\n case \"remove-extra\":\n case \"order\":\n return [];\n default:\n return \"\";\n }\n}\nexport {\n POST\n};\n"],"names":[],"mappings":";;;AAEK,MAAC,IAAI,GAAG,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK;AAC5C,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM;AACtC,EAAE,MAAM,KAAK,GAAG,eAAe,EAAE;AACjC,EAAE,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,SAAS,CAAC;AACrD,EAAE,IAAI,CAAC,OAAO,EAAE;AAChB,IAAI,OAAO,IAAI;AACf,MAAM;AACN,QAAQ,EAAE,EAAE,KAAK;AACjB,QAAQ,KAAK,EAAE;AACf,OAAO;AACP,MAAM,EAAE,MAAM,EAAE,GAAG;AACnB,KAAK;AACL,EAAE;AACF,EAAE,IAAI,OAAO,CAAC,MAAM,KAAK,QAAQ,EAAE;AACnC,IAAI,OAAO,IAAI;AACf,MAAM;AACN,QAAQ,EAAE,EAAE,KAAK;AACjB,QAAQ,KAAK,EAAE,CAAC,mBAAmB,EAAE,OAAO,CAAC,MAAM,CAAC;AACpD,OAAO;AACP,MAAM,EAAE,MAAM,EAAE,GAAG;AACnB,KAAK;AACL,EAAE;AACF,EAAE,IAAI;AACN,IAAI,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE;AACrC,IAAI,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO;AACnC,IAAI,MAAM,OAAO,GAAG,UAAU,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;AACrG,IAAI,IAAI,OAAO,EAAE;AACjB,MAAM,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC;AACnD,IAAI;AACJ,IAAI,MAAM,cAAc,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,IAAI,GAAG,CAAC,GAAG,CAAC;AACzH,IAAI,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS;AAC5C,IAAI,MAAM,aAAa,GAAG,OAAO,GAAG,OAAO,CAAC,IAAI,GAAG,CAAC;AACpD,IAAI,MAAM,iBAAiB,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,KAAK,KAAK,CAAC;AAC3E,IAAI,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK;AAC7D,MAAM,MAAM,CAAC,GAAG,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;AAClC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,EAAE,KAAK,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC;AACxF,IAAI,CAAC,CAAC,CAAC,MAAM;AACb,IAAI,MAAM,YAAY,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK;AAC9C,MAAM,MAAM,CAAC,GAAG,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;AAClC,MAAM,OAAO;AACb,QAAQ,EAAE,EAAE,CAAC,CAAC,EAAE;AAChB,QAAQ,IAAI,EAAE,CAAC,CAAC,IAAI;AACpB,QAAQ,QAAQ,EAAE,CAAC,CAAC,QAAQ;AAC5B,QAAQ,KAAK,EAAE,CAAC,EAAE,KAAK,IAAI,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC;AACjD,QAAQ,SAAS,EAAE,CAAC,EAAE,SAAS,IAAI,KAAK;AACxC,OAAO;AACP,IAAI,CAAC,CAAC;AACN,IAAI,MAAM,OAAO,GAAG;AACpB,MAAM,MAAM;AACZ,MAAM,SAAS;AACf,MAAM,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO,IAAI,OAAO;AAC9C,MAAM,QAAQ,EAAE;AAChB,QAAQ,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,KAAK,CAAC;AAC9D,QAAQ,SAAS,EAAE,cAAc;AACjC,QAAQ,WAAW,EAAE,iBAAiB,IAAI,IAAI,EAAE,EAAE,WAAW;AAC7D,OAAO;AACP,MAAM,OAAO,EAAE,YAAY;AAC3B,MAAM,OAAO,EAAE;AACf,QAAQ,cAAc,EAAE,SAAS,CAAC,MAAM;AACxC,QAAQ,iBAAiB,EAAE,aAAa;AACxC,QAAQ,iBAAiB,EAAE,iBAAiB,CAAC,MAAM;AACnD,QAAQ;AACR;AACA,KAAK;AACL,IAAI,KAAK,CAAC,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC;AACrD,IAAI,OAAO,IAAI,CAAC;AAChB,MAAM,EAAE,EAAE,IAAI;AACd,MAAM;AACN,KAAK,CAAC;AACN,EAAE,CAAC,CAAC,OAAO,KAAK,EAAE;AAClB,IAAI,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC;AAClD,IAAI,OAAO,IAAI;AACf,MAAM;AACN,QAAQ,EAAE,EAAE,KAAK;AACjB,QAAQ,KAAK,EAAE;AACf,OAAO;AACP,MAAM,EAAE,MAAM,EAAE,GAAG;AACnB,KAAK;AACL,EAAE;AACF;AACA,SAAS,cAAc,CAAC,IAAI,EAAE;AAC9B,EAAE,QAAQ,IAAI;AACd,IAAI,KAAK,OAAO;AAChB,MAAM,OAAO,EAAE;AACf,IAAI,KAAK,MAAM;AACf,IAAI,KAAK,QAAQ;AACjB,MAAM,OAAO,EAAE;AACf,IAAI,KAAK,UAAU;AACnB,IAAI,KAAK,cAAc;AACvB,IAAI,KAAK,OAAO;AAChB,MAAM,OAAO,EAAE;AACf,IAAI;AACJ,MAAM,OAAO,EAAE;AACf;AACA;;;;"}
@@ -0,0 +1,219 @@
1
+ import { j as json } from './index-wpIsICWW.js';
2
+ import { g as getSessionStore } from './sessions-CEbRx2vt.js';
3
+ import { z } from 'zod';
4
+
5
+ const QuestionTypeSchema = z.enum([
6
+ "single",
7
+ "multiple",
8
+ "remove-extra",
9
+ "order",
10
+ "match",
11
+ "text"
12
+ ]);
13
+ const MatchOptionsSchema = z.object({
14
+ left: z.array(z.string()),
15
+ right: z.array(z.string())
16
+ });
17
+ const AttachmentSchema = z.object({
18
+ type: z.enum(["audio", "file", "image", "video"]),
19
+ url: z.string(),
20
+ title: z.string().optional(),
21
+ alt: z.string().optional()
22
+ });
23
+ const ValidationRulesSchema = z.object({
24
+ minLength: z.number().optional(),
25
+ maxLength: z.number().optional(),
26
+ minSelections: z.number().optional(),
27
+ maxSelections: z.number().optional(),
28
+ pattern: z.string().optional()
29
+ });
30
+ const QuestionSchema = z.object({
31
+ id: z.string(),
32
+ type: QuestionTypeSchema,
33
+ question: z.string(),
34
+ explanation: z.string().optional(),
35
+ points: z.number().optional(),
36
+ required: z.boolean().optional(),
37
+ options: z.union([z.array(z.string()), MatchOptionsSchema]).optional(),
38
+ attachments: z.array(AttachmentSchema).optional(),
39
+ validation: ValidationRulesSchema.optional()
40
+ });
41
+ const QuizMetadataSchema = z.object({
42
+ author: z.string().optional(),
43
+ difficulty: z.enum(["easy", "medium", "hard"]).optional(),
44
+ estimatedTime: z.number().optional(),
45
+ tags: z.array(z.string()).optional()
46
+ });
47
+ const QuizDataSchema = z.object({
48
+ title: z.string().optional(),
49
+ description: z.string().optional(),
50
+ version: z.string().optional(),
51
+ metadata: QuizMetadataSchema.optional(),
52
+ questions: z.array(QuestionSchema).min(1, "Quiz must have at least one question")
53
+ });
54
+ const AnalyticsConfigSchema = z.object({
55
+ enabled: z.boolean().optional(),
56
+ provider: z.enum(["none", "plausible", "google", "custom"]).optional(),
57
+ trackingId: z.string().optional(),
58
+ anonymizeIp: z.boolean().optional()
59
+ });
60
+ const LayoutConfigSchema = z.object({
61
+ title: z.string().optional(),
62
+ logo: z.string().nullable().optional(),
63
+ favicon: z.string().nullable().optional(),
64
+ css: z.string().nullable().optional(),
65
+ hideThemeSwitcher: z.boolean().optional(),
66
+ hideLanguageSwitcher: z.boolean().optional()
67
+ });
68
+ const QuizConfigSchema = z.object({
69
+ layout: LayoutConfigSchema.optional(),
70
+ theme: z.enum(["light", "dark", "auto"]).optional(),
71
+ css: z.string().nullable().optional(),
72
+ logo: z.string().nullable().optional(),
73
+ favicon: z.string().nullable().optional(),
74
+ localization: z.string().nullable().optional(),
75
+ language: z.string().optional(),
76
+ shuffleQuestions: z.boolean().optional(),
77
+ shuffleOptions: z.boolean().optional(),
78
+ allowBackNavigation: z.boolean().optional(),
79
+ showProgress: z.boolean().optional(),
80
+ showQuestionNumbers: z.boolean().optional(),
81
+ timerEnabled: z.boolean().optional(),
82
+ timerDuration: z.number().optional(),
83
+ webhook: z.string().url().nullable().optional().or(z.literal("")),
84
+ analytics: AnalyticsConfigSchema.nullable().optional(),
85
+ allowedOrigins: z.array(z.string()).optional(),
86
+ requireConsent: z.boolean().optional()
87
+ });
88
+ const StartQuizSchema = z.object({
89
+ quiz: z.union([QuizDataSchema, z.string()]),
90
+ config: QuizConfigSchema.optional(),
91
+ open: z.boolean().optional(),
92
+ sessionId: z.string().optional()
93
+ });
94
+ const POST = async ({ request, url }) => {
95
+ try {
96
+ const body = await request.json();
97
+ const parsed = StartQuizSchema.parse(body);
98
+ let quizData;
99
+ if (typeof parsed.quiz === "string") {
100
+ try {
101
+ quizData = JSON.parse(parsed.quiz);
102
+ } catch {
103
+ return json({ ok: false, error: "Invalid quiz JSON string" }, { status: 400 });
104
+ }
105
+ } else {
106
+ quizData = parsed.quiz;
107
+ }
108
+ const validationResult = QuizDataSchema.safeParse(quizData);
109
+ if (!validationResult.success) {
110
+ return json(
111
+ { ok: false, error: "Invalid quiz data", details: validationResult.error.format() },
112
+ { status: 400 }
113
+ );
114
+ }
115
+ const store = getSessionStore();
116
+ const session = store.createSession(quizData, parsed.config || {}, parsed.sessionId);
117
+ const baseUrl = `${url.protocol}//${url.host}`;
118
+ const quizUrl = `${baseUrl}/${session.quizId}/${session.sessionId}`;
119
+ const adminUrl = `${baseUrl}/admin/session/${session.quizId}/${session.sessionId}`;
120
+ const expiresAt = new Date(session.expiresAt).toISOString();
121
+ return json({
122
+ ok: true,
123
+ quizId: session.quizId,
124
+ sessionId: session.sessionId,
125
+ openUrl: parsed.open !== false ? quizUrl : void 0,
126
+ adminUrl,
127
+ expiresAt
128
+ });
129
+ } catch (error) {
130
+ if (error instanceof z.ZodError) {
131
+ return json(
132
+ { ok: false, error: "Validation error", details: error.format() },
133
+ { status: 400 }
134
+ );
135
+ }
136
+ console.error("Error creating quiz session:", error);
137
+ return json({ ok: false, error: "Internal server error" }, { status: 500 });
138
+ }
139
+ };
140
+ const GET = async () => {
141
+ return json({
142
+ schema: {
143
+ title: z.string().optional(),
144
+ description: z.string().optional(),
145
+ version: z.string().optional(),
146
+ metadata: z.object({
147
+ author: z.string().optional(),
148
+ difficulty: z.enum(["easy", "medium", "hard"]).optional(),
149
+ estimatedTime: z.number().optional(),
150
+ tags: z.array(z.string()).optional()
151
+ }).optional(),
152
+ questions: z.array(
153
+ z.object({
154
+ id: z.string(),
155
+ type: z.enum(["single", "multiple", "remove-extra", "order", "match", "text"]),
156
+ question: z.string(),
157
+ explanation: z.string().optional(),
158
+ points: z.number().optional(),
159
+ required: z.boolean().optional(),
160
+ options: z.union([
161
+ z.array(z.string()),
162
+ z.object({ left: z.array(z.string()), right: z.array(z.string()) })
163
+ ]).optional(),
164
+ attachments: z.array(
165
+ z.object({
166
+ type: z.enum(["audio", "file", "image", "video"]),
167
+ url: z.string(),
168
+ title: z.string().optional(),
169
+ alt: z.string().optional()
170
+ })
171
+ ).optional(),
172
+ validation: z.object({
173
+ minLength: z.number().optional(),
174
+ maxLength: z.number().optional(),
175
+ minSelections: z.number().optional(),
176
+ maxSelections: z.number().optional(),
177
+ pattern: z.string().optional()
178
+ }).optional()
179
+ })
180
+ ).min(1)
181
+ },
182
+ examples: [
183
+ {
184
+ type: "single",
185
+ description: "Single choice question with radio buttons",
186
+ example: {
187
+ id: "q1",
188
+ type: "single",
189
+ question: "What is the capital of France?",
190
+ options: ["London", "Paris", "Berlin", "Madrid"],
191
+ correctAnswer: "Paris"
192
+ }
193
+ },
194
+ {
195
+ type: "multiple",
196
+ description: "Multiple choice question with checkboxes",
197
+ example: {
198
+ id: "q2",
199
+ type: "multiple",
200
+ question: "Which are programming languages?",
201
+ options: ["JavaScript", "Python", "HTML", "CSS"]
202
+ }
203
+ },
204
+ {
205
+ type: "text",
206
+ description: "Free-form text answer",
207
+ example: {
208
+ id: "q3",
209
+ type: "text",
210
+ question: "Explain closure in your own words.",
211
+ validation: { minLength: 50, maxLength: 500 }
212
+ }
213
+ }
214
+ ]
215
+ });
216
+ };
217
+
218
+ export { GET, POST };
219
+ //# sourceMappingURL=_server.ts-C2NKc-VD.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_server.ts-C2NKc-VD.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/quiz/_server.ts.js"],"sourcesContent":["import { json } from \"@sveltejs/kit\";\nimport { g as getSessionStore } from \"../../../../chunks/sessions.js\";\nimport { z } from \"zod\";\nconst QuestionTypeSchema = z.enum([\n \"single\",\n \"multiple\",\n \"remove-extra\",\n \"order\",\n \"match\",\n \"text\"\n]);\nconst MatchOptionsSchema = z.object({\n left: z.array(z.string()),\n right: z.array(z.string())\n});\nconst AttachmentSchema = z.object({\n type: z.enum([\"audio\", \"file\", \"image\", \"video\"]),\n url: z.string(),\n title: z.string().optional(),\n alt: z.string().optional()\n});\nconst ValidationRulesSchema = z.object({\n minLength: z.number().optional(),\n maxLength: z.number().optional(),\n minSelections: z.number().optional(),\n maxSelections: z.number().optional(),\n pattern: z.string().optional()\n});\nconst QuestionSchema = z.object({\n id: z.string(),\n type: QuestionTypeSchema,\n question: z.string(),\n explanation: z.string().optional(),\n points: z.number().optional(),\n required: z.boolean().optional(),\n options: z.union([z.array(z.string()), MatchOptionsSchema]).optional(),\n attachments: z.array(AttachmentSchema).optional(),\n validation: ValidationRulesSchema.optional()\n});\nconst QuizMetadataSchema = z.object({\n author: z.string().optional(),\n difficulty: z.enum([\"easy\", \"medium\", \"hard\"]).optional(),\n estimatedTime: z.number().optional(),\n tags: z.array(z.string()).optional()\n});\nconst QuizDataSchema = z.object({\n title: z.string().optional(),\n description: z.string().optional(),\n version: z.string().optional(),\n metadata: QuizMetadataSchema.optional(),\n questions: z.array(QuestionSchema).min(1, \"Quiz must have at least one question\")\n});\nconst AnalyticsConfigSchema = z.object({\n enabled: z.boolean().optional(),\n provider: z.enum([\"none\", \"plausible\", \"google\", \"custom\"]).optional(),\n trackingId: z.string().optional(),\n anonymizeIp: z.boolean().optional()\n});\nconst LayoutConfigSchema = z.object({\n title: z.string().optional(),\n logo: z.string().nullable().optional(),\n favicon: z.string().nullable().optional(),\n css: z.string().nullable().optional(),\n hideThemeSwitcher: z.boolean().optional(),\n hideLanguageSwitcher: z.boolean().optional()\n});\nconst QuizConfigSchema = z.object({\n layout: LayoutConfigSchema.optional(),\n theme: z.enum([\"light\", \"dark\", \"auto\"]).optional(),\n css: z.string().nullable().optional(),\n logo: z.string().nullable().optional(),\n favicon: z.string().nullable().optional(),\n localization: z.string().nullable().optional(),\n language: z.string().optional(),\n shuffleQuestions: z.boolean().optional(),\n shuffleOptions: z.boolean().optional(),\n allowBackNavigation: z.boolean().optional(),\n showProgress: z.boolean().optional(),\n showQuestionNumbers: z.boolean().optional(),\n timerEnabled: z.boolean().optional(),\n timerDuration: z.number().optional(),\n webhook: z.string().url().nullable().optional().or(z.literal(\"\")),\n analytics: AnalyticsConfigSchema.nullable().optional(),\n allowedOrigins: z.array(z.string()).optional(),\n requireConsent: z.boolean().optional()\n});\nconst StartQuizSchema = z.object({\n quiz: z.union([QuizDataSchema, z.string()]),\n config: QuizConfigSchema.optional(),\n open: z.boolean().optional(),\n sessionId: z.string().optional()\n});\nconst POST = async ({ request, url }) => {\n try {\n const body = await request.json();\n const parsed = StartQuizSchema.parse(body);\n let quizData;\n if (typeof parsed.quiz === \"string\") {\n try {\n quizData = JSON.parse(parsed.quiz);\n } catch {\n return json({ ok: false, error: \"Invalid quiz JSON string\" }, { status: 400 });\n }\n } else {\n quizData = parsed.quiz;\n }\n const validationResult = QuizDataSchema.safeParse(quizData);\n if (!validationResult.success) {\n return json(\n { ok: false, error: \"Invalid quiz data\", details: validationResult.error.format() },\n { status: 400 }\n );\n }\n const store = getSessionStore();\n const session = store.createSession(quizData, parsed.config || {}, parsed.sessionId);\n const baseUrl = `${url.protocol}//${url.host}`;\n const quizUrl = `${baseUrl}/${session.quizId}/${session.sessionId}`;\n const adminUrl = `${baseUrl}/admin/session/${session.quizId}/${session.sessionId}`;\n const expiresAt = new Date(session.expiresAt).toISOString();\n return json({\n ok: true,\n quizId: session.quizId,\n sessionId: session.sessionId,\n openUrl: parsed.open !== false ? quizUrl : void 0,\n adminUrl,\n expiresAt\n });\n } catch (error) {\n if (error instanceof z.ZodError) {\n return json(\n { ok: false, error: \"Validation error\", details: error.format() },\n { status: 400 }\n );\n }\n console.error(\"Error creating quiz session:\", error);\n return json({ ok: false, error: \"Internal server error\" }, { status: 500 });\n }\n};\nconst GET = async () => {\n return json({\n schema: {\n title: z.string().optional(),\n description: z.string().optional(),\n version: z.string().optional(),\n metadata: z.object({\n author: z.string().optional(),\n difficulty: z.enum([\"easy\", \"medium\", \"hard\"]).optional(),\n estimatedTime: z.number().optional(),\n tags: z.array(z.string()).optional()\n }).optional(),\n questions: z.array(\n z.object({\n id: z.string(),\n type: z.enum([\"single\", \"multiple\", \"remove-extra\", \"order\", \"match\", \"text\"]),\n question: z.string(),\n explanation: z.string().optional(),\n points: z.number().optional(),\n required: z.boolean().optional(),\n options: z.union([\n z.array(z.string()),\n z.object({ left: z.array(z.string()), right: z.array(z.string()) })\n ]).optional(),\n attachments: z.array(\n z.object({\n type: z.enum([\"audio\", \"file\", \"image\", \"video\"]),\n url: z.string(),\n title: z.string().optional(),\n alt: z.string().optional()\n })\n ).optional(),\n validation: z.object({\n minLength: z.number().optional(),\n maxLength: z.number().optional(),\n minSelections: z.number().optional(),\n maxSelections: z.number().optional(),\n pattern: z.string().optional()\n }).optional()\n })\n ).min(1)\n },\n examples: [\n {\n type: \"single\",\n description: \"Single choice question with radio buttons\",\n example: {\n id: \"q1\",\n type: \"single\",\n question: \"What is the capital of France?\",\n options: [\"London\", \"Paris\", \"Berlin\", \"Madrid\"],\n correctAnswer: \"Paris\"\n }\n },\n {\n type: \"multiple\",\n description: \"Multiple choice question with checkboxes\",\n example: {\n id: \"q2\",\n type: \"multiple\",\n question: \"Which are programming languages?\",\n options: [\"JavaScript\", \"Python\", \"HTML\", \"CSS\"]\n }\n },\n {\n type: \"text\",\n description: \"Free-form text answer\",\n example: {\n id: \"q3\",\n type: \"text\",\n question: \"Explain closure in your own words.\",\n validation: { minLength: 50, maxLength: 500 }\n }\n }\n ]\n });\n};\nexport {\n GET,\n POST\n};\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ import { j as json } from './index-wpIsICWW.js';
2
+ import { g as getSessionStore } from './sessions-CEbRx2vt.js';
3
+
4
+ const GET = async ({ params, url }) => {
5
+ const { quizId, sessionId } = params;
6
+ const includeAnswers = url.searchParams.get("includeAnswers") === "true";
7
+ const store = getSessionStore();
8
+ const session = store.getSession(quizId, sessionId);
9
+ if (!session) {
10
+ return json(
11
+ {
12
+ status: "not_found",
13
+ startedAt: "",
14
+ error: "Session not found or expired"
15
+ },
16
+ { status: 404 }
17
+ );
18
+ }
19
+ const response = {
20
+ status: session.status,
21
+ quizId,
22
+ sessionId,
23
+ startedAt: session.startedAt,
24
+ completedAt: session.completedAt,
25
+ expiresAt: session.expiresAt,
26
+ status_: session.status
27
+ };
28
+ if (includeAnswers) {
29
+ if (session.answers) {
30
+ response.answers = Object.fromEntries(session.answers);
31
+ }
32
+ response.quiz = session.quiz;
33
+ response.results = session.results;
34
+ }
35
+ return json(response);
36
+ };
37
+
38
+ export { GET };
39
+ //# sourceMappingURL=_server.ts-CHyNcOmK.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_server.ts-CHyNcOmK.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/quiz/_quizId_/session/_sessionId_/_server.ts.js"],"sourcesContent":["import { json } from \"@sveltejs/kit\";\nimport { g as getSessionStore } from \"../../../../../../../chunks/sessions.js\";\nconst GET = async ({ params, url }) => {\n const { quizId, sessionId } = params;\n const includeAnswers = url.searchParams.get(\"includeAnswers\") === \"true\";\n const store = getSessionStore();\n const session = store.getSession(quizId, sessionId);\n if (!session) {\n return json(\n {\n status: \"not_found\",\n startedAt: \"\",\n error: \"Session not found or expired\"\n },\n { status: 404 }\n );\n }\n const response = {\n status: session.status,\n quizId,\n sessionId,\n startedAt: session.startedAt,\n completedAt: session.completedAt,\n expiresAt: session.expiresAt,\n status_: session.status\n };\n if (includeAnswers) {\n if (session.answers) {\n response.answers = Object.fromEntries(session.answers);\n }\n response.quiz = session.quiz;\n response.results = session.results;\n }\n return json(response);\n};\nexport {\n GET\n};\n"],"names":[],"mappings":";;;AAEK,MAAC,GAAG,GAAG,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK;AACvC,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM;AACtC,EAAE,MAAM,cAAc,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,gBAAgB,CAAC,KAAK,MAAM;AAC1E,EAAE,MAAM,KAAK,GAAG,eAAe,EAAE;AACjC,EAAE,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,SAAS,CAAC;AACrD,EAAE,IAAI,CAAC,OAAO,EAAE;AAChB,IAAI,OAAO,IAAI;AACf,MAAM;AACN,QAAQ,MAAM,EAAE,WAAW;AAC3B,QAAQ,SAAS,EAAE,EAAE;AACrB,QAAQ,KAAK,EAAE;AACf,OAAO;AACP,MAAM,EAAE,MAAM,EAAE,GAAG;AACnB,KAAK;AACL,EAAE;AACF,EAAE,MAAM,QAAQ,GAAG;AACnB,IAAI,MAAM,EAAE,OAAO,CAAC,MAAM;AAC1B,IAAI,MAAM;AACV,IAAI,SAAS;AACb,IAAI,SAAS,EAAE,OAAO,CAAC,SAAS;AAChC,IAAI,WAAW,EAAE,OAAO,CAAC,WAAW;AACpC,IAAI,SAAS,EAAE,OAAO,CAAC,SAAS;AAChC,IAAI,OAAO,EAAE,OAAO,CAAC;AACrB,GAAG;AACH,EAAE,IAAI,cAAc,EAAE;AACtB,IAAI,IAAI,OAAO,CAAC,OAAO,EAAE;AACzB,MAAM,QAAQ,CAAC,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC;AAC5D,IAAI;AACJ,IAAI,QAAQ,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI;AAChC,IAAI,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO;AACtC,EAAE;AACF,EAAE,OAAO,IAAI,CAAC,QAAQ,CAAC;AACvB;;;;"}
@@ -0,0 +1,51 @@
1
+ import { j as json } from './index-wpIsICWW.js';
2
+ import { g as getSessionStore } from './sessions-CEbRx2vt.js';
3
+
4
+ const POST = async ({ params, request }) => {
5
+ const { quizId, sessionId } = params;
6
+ const store = getSessionStore();
7
+ const session = store.getSession(quizId, sessionId);
8
+ if (!session) {
9
+ return json(
10
+ {
11
+ ok: false,
12
+ message: "",
13
+ cancelledAt: ""
14
+ },
15
+ { status: 404 }
16
+ );
17
+ }
18
+ if (session.status !== "active") {
19
+ return json(
20
+ {
21
+ ok: false,
22
+ message: `Session is already ${session.status}`,
23
+ cancelledAt: ""
24
+ },
25
+ { status: 400 }
26
+ );
27
+ }
28
+ try {
29
+ const body = await request.json();
30
+ const reason = body.reason;
31
+ store.cancelSession(quizId, sessionId, reason);
32
+ return json({
33
+ ok: true,
34
+ message: reason ? `Session cancelled: ${reason}` : "Session cancelled",
35
+ cancelledAt: (/* @__PURE__ */ new Date()).toISOString()
36
+ });
37
+ } catch (error) {
38
+ console.error("Error cancelling quiz:", error);
39
+ return json(
40
+ {
41
+ ok: false,
42
+ message: "Failed to cancel session",
43
+ cancelledAt: ""
44
+ },
45
+ { status: 500 }
46
+ );
47
+ }
48
+ };
49
+
50
+ export { POST };
51
+ //# sourceMappingURL=_server.ts-CakPvrry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_server.ts-CakPvrry.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/quiz/_quizId_/session/_sessionId_/cancel/_server.ts.js"],"sourcesContent":["import { json } from \"@sveltejs/kit\";\nimport { g as getSessionStore } from \"../../../../../../../../chunks/sessions.js\";\nconst POST = async ({ params, request }) => {\n const { quizId, sessionId } = params;\n const store = getSessionStore();\n const session = store.getSession(quizId, sessionId);\n if (!session) {\n return json(\n {\n ok: false,\n message: \"\",\n cancelledAt: \"\"\n },\n { status: 404 }\n );\n }\n if (session.status !== \"active\") {\n return json(\n {\n ok: false,\n message: `Session is already ${session.status}`,\n cancelledAt: \"\"\n },\n { status: 400 }\n );\n }\n try {\n const body = await request.json();\n const reason = body.reason;\n store.cancelSession(quizId, sessionId, reason);\n return json({\n ok: true,\n message: reason ? `Session cancelled: ${reason}` : \"Session cancelled\",\n cancelledAt: (/* @__PURE__ */ new Date()).toISOString()\n });\n } catch (error) {\n console.error(\"Error cancelling quiz:\", error);\n return json(\n {\n ok: false,\n message: \"Failed to cancel session\",\n cancelledAt: \"\"\n },\n { status: 500 }\n );\n }\n};\nexport {\n POST\n};\n"],"names":[],"mappings":";;;AAEK,MAAC,IAAI,GAAG,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK;AAC5C,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM;AACtC,EAAE,MAAM,KAAK,GAAG,eAAe,EAAE;AACjC,EAAE,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,SAAS,CAAC;AACrD,EAAE,IAAI,CAAC,OAAO,EAAE;AAChB,IAAI,OAAO,IAAI;AACf,MAAM;AACN,QAAQ,EAAE,EAAE,KAAK;AACjB,QAAQ,OAAO,EAAE,EAAE;AACnB,QAAQ,WAAW,EAAE;AACrB,OAAO;AACP,MAAM,EAAE,MAAM,EAAE,GAAG;AACnB,KAAK;AACL,EAAE;AACF,EAAE,IAAI,OAAO,CAAC,MAAM,KAAK,QAAQ,EAAE;AACnC,IAAI,OAAO,IAAI;AACf,MAAM;AACN,QAAQ,EAAE,EAAE,KAAK;AACjB,QAAQ,OAAO,EAAE,CAAC,mBAAmB,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;AACvD,QAAQ,WAAW,EAAE;AACrB,OAAO;AACP,MAAM,EAAE,MAAM,EAAE,GAAG;AACnB,KAAK;AACL,EAAE;AACF,EAAE,IAAI;AACN,IAAI,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE;AACrC,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM;AAC9B,IAAI,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC;AAClD,IAAI,OAAO,IAAI,CAAC;AAChB,MAAM,EAAE,EAAE,IAAI;AACd,MAAM,OAAO,EAAE,MAAM,GAAG,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC,GAAG,mBAAmB;AAC5E,MAAM,WAAW,EAAE,iBAAiB,IAAI,IAAI,EAAE,EAAE,WAAW;AAC3D,KAAK,CAAC;AACN,EAAE,CAAC,CAAC,OAAO,KAAK,EAAE;AAClB,IAAI,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC;AAClD,IAAI,OAAO,IAAI;AACf,MAAM;AACN,QAAQ,EAAE,EAAE,KAAK;AACjB,QAAQ,OAAO,EAAE,0BAA0B;AAC3C,QAAQ,WAAW,EAAE;AACrB,OAAO;AACP,MAAM,EAAE,MAAM,EAAE,GAAG;AACnB,KAAK;AACL,EAAE;AACF;;;;"}
@@ -0,0 +1,35 @@
1
+ import { j as json } from './index-wpIsICWW.js';
2
+ import { g as getSessionStore } from './sessions-CEbRx2vt.js';
3
+
4
+ const GET = async ({ params, url }) => {
5
+ const { quizId, sessionId } = params;
6
+ const store = getSessionStore();
7
+ const includeAnswers = url.searchParams.get("includeAnswers") === "true";
8
+ const session = store.getSession(quizId, sessionId);
9
+ if (!session) {
10
+ return json({
11
+ status: "not_found",
12
+ startedAt: "",
13
+ error: "Session not found or expired"
14
+ });
15
+ }
16
+ const progress = {
17
+ answered: session.answers?.size || 0,
18
+ total: session.quiz.questions.length,
19
+ percentage: session.quiz.questions.length > 0 ? Math.round((session.answers?.size || 0) / session.quiz.questions.length * 100) : 0
20
+ };
21
+ const response = {
22
+ status: session.status,
23
+ startedAt: session.startedAt,
24
+ completedAt: session.completedAt,
25
+ progress,
26
+ expiresAt: session.expiresAt
27
+ };
28
+ if (includeAnswers && session.status === "completed" && session.results) {
29
+ response.answers = session.results;
30
+ }
31
+ return json(response);
32
+ };
33
+
34
+ export { GET };
35
+ //# sourceMappingURL=_server.ts-uSNr19lE.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_server.ts-uSNr19lE.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/quiz/_quizId_/session/_sessionId_/status/_server.ts.js"],"sourcesContent":["import { json } from \"@sveltejs/kit\";\nimport { g as getSessionStore } from \"../../../../../../../../chunks/sessions.js\";\nconst GET = async ({ params, url }) => {\n const { quizId, sessionId } = params;\n const store = getSessionStore();\n const includeAnswers = url.searchParams.get(\"includeAnswers\") === \"true\";\n const session = store.getSession(quizId, sessionId);\n if (!session) {\n return json({\n status: \"not_found\",\n startedAt: \"\",\n error: \"Session not found or expired\"\n });\n }\n const progress = {\n answered: session.answers?.size || 0,\n total: session.quiz.questions.length,\n percentage: session.quiz.questions.length > 0 ? Math.round((session.answers?.size || 0) / session.quiz.questions.length * 100) : 0\n };\n const response = {\n status: session.status,\n startedAt: session.startedAt,\n completedAt: session.completedAt,\n progress,\n expiresAt: session.expiresAt\n };\n if (includeAnswers && session.status === \"completed\" && session.results) {\n response.answers = session.results;\n }\n return json(response);\n};\nexport {\n GET\n};\n"],"names":[],"mappings":";;;AAEK,MAAC,GAAG,GAAG,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK;AACvC,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM;AACtC,EAAE,MAAM,KAAK,GAAG,eAAe,EAAE;AACjC,EAAE,MAAM,cAAc,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,gBAAgB,CAAC,KAAK,MAAM;AAC1E,EAAE,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,SAAS,CAAC;AACrD,EAAE,IAAI,CAAC,OAAO,EAAE;AAChB,IAAI,OAAO,IAAI,CAAC;AAChB,MAAM,MAAM,EAAE,WAAW;AACzB,MAAM,SAAS,EAAE,EAAE;AACnB,MAAM,KAAK,EAAE;AACb,KAAK,CAAC;AACN,EAAE;AACF,EAAE,MAAM,QAAQ,GAAG;AACnB,IAAI,QAAQ,EAAE,OAAO,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC;AACxC,IAAI,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM;AACxC,IAAI,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,GAAG,CAAC,GAAG;AACrI,GAAG;AACH,EAAE,MAAM,QAAQ,GAAG;AACnB,IAAI,MAAM,EAAE,OAAO,CAAC,MAAM;AAC1B,IAAI,SAAS,EAAE,OAAO,CAAC,SAAS;AAChC,IAAI,WAAW,EAAE,OAAO,CAAC,WAAW;AACpC,IAAI,QAAQ;AACZ,IAAI,SAAS,EAAE,OAAO,CAAC;AACvB,GAAG;AACH,EAAE,IAAI,cAAc,IAAI,OAAO,CAAC,MAAM,KAAK,WAAW,IAAI,OAAO,CAAC,OAAO,EAAE;AAC3E,IAAI,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO;AACtC,EAAE;AACF,EAAE,OAAO,IAAI,CAAC,QAAQ,CAAC;AACvB;;;;"}
@@ -0,0 +1,25 @@
1
+ import { F as noop, D as writable } from './exports-BNC8dbq3.js';
2
+
3
+ function create_updated_store() {
4
+ const { set, subscribe } = writable(false);
5
+ {
6
+ return {
7
+ subscribe,
8
+ // eslint-disable-next-line @typescript-eslint/require-await
9
+ check: async () => false
10
+ };
11
+ }
12
+ }
13
+ const is_legacy = noop.toString().includes("$$") || /function \w+\(\) \{\}/.test(noop.toString());
14
+ if (is_legacy) {
15
+ ({
16
+ url: new URL("https://example.com")
17
+ });
18
+ }
19
+ const stores = {
20
+ updated: /* @__PURE__ */ create_updated_store()
21
+ };
22
+ ({
23
+ check: stores.updated.check
24
+ });
25
+ //# sourceMappingURL=client-Dw0t4rDL.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client-Dw0t4rDL.js","sources":["../../../.svelte-kit/adapter-node/chunks/client.js"],"sourcesContent":["import { n as noop } from \"./equality.js\";\nimport \"@sveltejs/kit/internal/server\";\nimport \"@sveltejs/kit/internal\";\nimport { w as writable } from \"./exports.js\";\nimport \"./utils.js\";\nfunction create_updated_store() {\n const { set, subscribe } = writable(false);\n {\n return {\n subscribe,\n // eslint-disable-next-line @typescript-eslint/require-await\n check: async () => false\n };\n }\n}\nconst is_legacy = noop.toString().includes(\"$$\") || /function \\w+\\(\\) \\{\\}/.test(noop.toString());\nif (is_legacy) {\n ({\n data: {},\n form: null,\n error: null,\n params: {},\n route: { id: null },\n state: {},\n status: -1,\n url: new URL(\"https://example.com\")\n });\n}\nconst stores = {\n updated: /* @__PURE__ */ create_updated_store()\n};\n({\n check: stores.updated.check\n});\n"],"names":[],"mappings":";;AAKA,SAAS,oBAAoB,GAAG;AAChC,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC;AAC5C,EAAE;AACF,IAAI,OAAO;AACX,MAAM,SAAS;AACf;AACA,MAAM,KAAK,EAAE,YAAY;AACzB,KAAK;AACL,EAAE;AACF;AACA,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;AACjG,IAAI,SAAS,EAAE;AACf,EAAE,CAAC;AACH,IAOI,GAAG,EAAE,IAAI,GAAG,CAAC,qBAAqB;AACtC,GAAG;AACH;AACA,MAAM,MAAM,GAAG;AACf,EAAE,OAAO,kBAAkB,oBAAoB;AAC/C,CAAC;AACD,CAAC;AACD,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC;AACxB,CAAC"}