edu-sdk 0.1.0 → 0.2.0

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.
package/README.md CHANGED
@@ -38,6 +38,9 @@ const quiz = await createQuiz({
38
38
  | Function | Description |
39
39
  | --- | --- |
40
40
  | `createQuiz` | Multiple-choice questions |
41
+ | `gradeQuiz` | Score submitted quiz answers |
42
+ | `createQuizAttempt` | Start a quiz attempt record |
43
+ | `completeQuizAttempt` | Finish an attempt and grade it |
41
44
  | `createFlashcards` | Front/back flashcards |
42
45
  | `createStudyGuide` | Structured study guide |
43
46
  | `createPracticeProblems` | Practice problems with solutions |
@@ -68,7 +71,7 @@ For React components that render these outputs, use [`@edu-sdk/react`](../react/
68
71
  ## Links
69
72
 
70
73
  - [Monorepo README](../../README.md)
71
- - [GitHub](https://github.com/Tobi3333A/edu-sdk)
74
+ - [GitHub](https://github.com/klawrodev/edu-sdk)
72
75
 
73
76
  ## License
74
77
 
@@ -0,0 +1,29 @@
1
+ import { z } from "zod";
2
+ import { type GradeQuizResult } from "../quizzes/gradeQuiz.js";
3
+ import type { QuizQuestion } from "../quizzes/create-quiz.js";
4
+ export type AssessmentResult = GradeQuizResult;
5
+ declare const quizAttemptSchema: z.ZodObject<{
6
+ id: z.ZodString;
7
+ answers: z.ZodArray<z.ZodNullable<z.ZodNumber>>;
8
+ startedAt: z.ZodString;
9
+ completedAt: z.ZodOptional<z.ZodString>;
10
+ }, z.core.$strip>;
11
+ export type QuizAttempt = z.infer<typeof quizAttemptSchema>;
12
+ declare const createQuizAttemptOptionsSchema: z.ZodObject<{
13
+ id: z.ZodOptional<z.ZodString>;
14
+ answers: z.ZodOptional<z.ZodArray<z.ZodNullable<z.ZodNumber>>>;
15
+ startedAt: z.ZodOptional<z.ZodString>;
16
+ }, z.core.$strip>;
17
+ export type CreateQuizAttemptOptions = z.infer<typeof createQuizAttemptOptionsSchema>;
18
+ export type CompleteQuizAttemptOptions = {
19
+ attempt: QuizAttempt;
20
+ questions: QuizQuestion[];
21
+ answers: (number | null)[];
22
+ };
23
+ export declare function createQuizAttempt(options?: CreateQuizAttemptOptions): QuizAttempt;
24
+ export declare function completeQuizAttempt(options: CompleteQuizAttemptOptions): {
25
+ attempt: QuizAttempt;
26
+ result: AssessmentResult;
27
+ };
28
+ export {};
29
+ //# sourceMappingURL=attempt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attempt.d.ts","sourceRoot":"","sources":["../../src/assessment/attempt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAqC,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAClG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAE9D,MAAM,MAAM,gBAAgB,GAAG,eAAe,CAAC;AAE/C,QAAA,MAAM,iBAAiB;;;;;iBAKrB,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D,QAAA,MAAM,8BAA8B;;;;iBAIlC,CAAC;AAEH,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,8BAA8B,CAAC,CAAC;AAQtF,MAAM,MAAM,0BAA0B,GAAG;IACrC,OAAO,EAAE,WAAW,CAAC;IACrB,SAAS,EAAE,YAAY,EAAE,CAAC;IAC1B,OAAO,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC;CAC9B,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,OAAO,GAAE,wBAA6B,GAAG,WAAW,CAerF;AAED,wBAAgB,mBAAmB,CAC/B,OAAO,EAAE,0BAA0B,GACpC;IAAE,OAAO,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,gBAAgB,CAAA;CAAE,CAiBpD"}
@@ -0,0 +1,46 @@
1
+ import { z } from "zod";
2
+ import { InvalidInputError } from "../errors/errors.js";
3
+ import { gradeQuiz, gradeQuizOptionsSchema } from "../quizzes/gradeQuiz.js";
4
+ const quizAttemptSchema = z.object({
5
+ id: z.string().min(1),
6
+ answers: z.array(z.number().int().min(0).nullable()),
7
+ startedAt: z.string().min(1),
8
+ completedAt: z.string().min(1).optional(),
9
+ });
10
+ const createQuizAttemptOptionsSchema = z.object({
11
+ id: z.string().min(1).optional(),
12
+ answers: z.array(z.number().int().min(0).nullable()).optional(),
13
+ startedAt: z.string().min(1).optional(),
14
+ });
15
+ const completeQuizAttemptOptionsSchema = z.object({
16
+ attempt: quizAttemptSchema,
17
+ questions: gradeQuizOptionsSchema.shape.questions,
18
+ answers: gradeQuizOptionsSchema.shape.answers,
19
+ });
20
+ export function createQuizAttempt(options = {}) {
21
+ const parsed = createQuizAttemptOptionsSchema.safeParse(options);
22
+ if (!parsed.success) {
23
+ throw new InvalidInputError(parsed.error.issues[0]?.message ?? "Invalid quiz attempt options");
24
+ }
25
+ const data = parsed.data;
26
+ return {
27
+ id: data.id ?? crypto.randomUUID(),
28
+ answers: data.answers ?? [],
29
+ startedAt: data.startedAt ?? new Date().toISOString(),
30
+ };
31
+ }
32
+ export function completeQuizAttempt(options) {
33
+ const parsed = completeQuizAttemptOptionsSchema.safeParse(options);
34
+ if (!parsed.success) {
35
+ throw new InvalidInputError(parsed.error.issues[0]?.message ?? "Invalid complete quiz attempt options");
36
+ }
37
+ const { attempt, questions, answers } = parsed.data;
38
+ const result = gradeQuiz({ questions, answers });
39
+ const completedAttempt = {
40
+ ...attempt,
41
+ answers,
42
+ completedAt: new Date().toISOString(),
43
+ };
44
+ return { attempt: completedAttempt, result };
45
+ }
46
+ //# sourceMappingURL=attempt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attempt.js","sourceRoot":"","sources":["../../src/assessment/attempt.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -4,6 +4,10 @@ export { createNote } from './notes/create-note.js';
4
4
  export type { Note, CreateNoteOptions } from './notes/create-note.js';
5
5
  export { createQuiz } from './quizzes/create-quiz.js';
6
6
  export type { QuizQuestion, CreateQuizOptions } from './quizzes/create-quiz.js';
7
+ export { gradeQuiz } from './quizzes/gradeQuiz.js';
8
+ export type { GradeQuizOptions, GradeQuizResult } from './quizzes/gradeQuiz.js';
9
+ export { createQuizAttempt, completeQuizAttempt } from './assessment/attempt.js';
10
+ export type { QuizAttempt, AssessmentResult, CreateQuizAttemptOptions, CompleteQuizAttemptOptions } from './assessment/attempt.js';
7
11
  export { createStudyGuide } from './studyguide/create-studyguide.js';
8
12
  export type { StudyGuide, CreateStudyGuideOptions } from './studyguide/create-studyguide.js';
9
13
  export { createPracticeProblems } from './practice-problems/create-practice-problems.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,YAAY,EAAE,SAAS,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAE3F,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,YAAY,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAEtE,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAEhF,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,YAAY,EAAE,UAAU,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AAE7F,OAAO,EAAE,sBAAsB,EAAE,MAAM,iDAAiD,CAAC;AACzF,YAAY,EAAE,eAAe,EAAE,6BAA6B,EAAE,MAAM,iDAAiD,CAAC;AAEtH,YAAY,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,YAAY,EAAE,SAAS,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAE3F,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,YAAY,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAEtE,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAEhF,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEhF,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACjF,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AAEnI,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,YAAY,EAAE,UAAU,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AAE7F,OAAO,EAAE,sBAAsB,EAAE,MAAM,iDAAiD,CAAC;AACzF,YAAY,EAAE,eAAe,EAAE,6BAA6B,EAAE,MAAM,iDAAiD,CAAC;AAEtH,YAAY,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC"}
package/dist/index.js CHANGED
@@ -1,6 +1,8 @@
1
1
  export { createFlashcards } from './flashcard/create-flashcards.js';
2
2
  export { createNote } from './notes/create-note.js';
3
3
  export { createQuiz } from './quizzes/create-quiz.js';
4
+ export { gradeQuiz } from './quizzes/gradeQuiz.js';
5
+ export { createQuizAttempt, completeQuizAttempt } from './assessment/attempt.js';
4
6
  export { createStudyGuide } from './studyguide/create-studyguide.js';
5
7
  export { createPracticeProblems } from './practice-problems/create-practice-problems.js';
6
8
  export { EduSDKError, InvalidInputError } from './errors/errors.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAGpE,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAGpD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAGtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAGrE,OAAO,EAAE,sBAAsB,EAAE,MAAM,iDAAiD,CAAC;AAKzF,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAGpE,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAGpD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAGtD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAGnD,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAGjF,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAGrE,OAAO,EAAE,sBAAsB,EAAE,MAAM,iDAAiD,CAAC;AAKzF,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,26 @@
1
+ import { z } from "zod";
2
+ export declare const gradeQuizOptionsSchema: z.ZodObject<{
3
+ questions: z.ZodArray<z.ZodObject<{
4
+ question: z.ZodString;
5
+ options: z.ZodArray<z.ZodString>;
6
+ correctAnswer: z.ZodNumber;
7
+ }, z.core.$strip>>;
8
+ answers: z.ZodArray<z.ZodNullable<z.ZodNumber>>;
9
+ }, z.core.$strip>;
10
+ export type GradeQuizOptions = z.infer<typeof gradeQuizOptionsSchema>;
11
+ declare const gradeQuizResultSchema: z.ZodObject<{
12
+ score: z.ZodNumber;
13
+ total: z.ZodNumber;
14
+ percentage: z.ZodNumber;
15
+ results: z.ZodArray<z.ZodObject<{
16
+ questionIndex: z.ZodNumber;
17
+ selectedAnswer: z.ZodNullable<z.ZodNumber>;
18
+ correctAnswer: z.ZodNumber;
19
+ isCorrect: z.ZodBoolean;
20
+ isAnswered: z.ZodBoolean;
21
+ }, z.core.$strip>>;
22
+ }, z.core.$strip>;
23
+ export type GradeQuizResult = z.infer<typeof gradeQuizResultSchema>;
24
+ export declare function gradeQuiz(options: GradeQuizOptions): GradeQuizResult;
25
+ export {};
26
+ //# sourceMappingURL=gradeQuiz.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gradeQuiz.d.ts","sourceRoot":"","sources":["../../src/quizzes/gradeQuiz.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAmBxB,eAAO,MAAM,sBAAsB;;;;;;;iBA0B7B,CAAC;AAEP,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAUtE,QAAA,MAAM,qBAAqB;;;;;;;;;;;iBAKzB,CAAC;AAGH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE,wBAAgB,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,eAAe,CA4BpE"}
@@ -0,0 +1,81 @@
1
+ import { z } from "zod";
2
+ import { InvalidInputError } from "../errors/errors.js";
3
+ const quizQuestionSchema = z
4
+ .object({
5
+ question: z.string().min(1),
6
+ options: z.array(z.string()).min(2),
7
+ correctAnswer: z.number().int().min(0),
8
+ })
9
+ .superRefine((question, ctx) => {
10
+ if (question.correctAnswer >= question.options.length) {
11
+ ctx.addIssue({
12
+ code: "custom",
13
+ message: "correctAnswer must be a valid option index",
14
+ path: ["correctAnswer"],
15
+ });
16
+ }
17
+ });
18
+ export const gradeQuizOptionsSchema = z
19
+ .object({
20
+ questions: z.array(quizQuestionSchema).min(1),
21
+ answers: z.array(z.number().int().min(0).nullable()),
22
+ })
23
+ .superRefine((data, ctx) => {
24
+ if (data.answers.length !== data.questions.length) {
25
+ ctx.addIssue({
26
+ code: "custom",
27
+ message: "answers length must match questions length",
28
+ path: ["answers"],
29
+ });
30
+ return;
31
+ }
32
+ data.answers.forEach((answer, index) => {
33
+ if (answer === null)
34
+ return;
35
+ const optionCount = data.questions[index].options.length;
36
+ if (answer >= optionCount) {
37
+ ctx.addIssue({
38
+ code: "custom",
39
+ message: `answer at index ${index} is out of range`,
40
+ path: ["answers", index],
41
+ });
42
+ }
43
+ });
44
+ });
45
+ const gradeQuizResultItemSchema = z.object({
46
+ questionIndex: z.number().int().min(0),
47
+ selectedAnswer: z.number().int().min(0).nullable(),
48
+ correctAnswer: z.number().int().min(0),
49
+ isCorrect: z.boolean(),
50
+ isAnswered: z.boolean(),
51
+ });
52
+ const gradeQuizResultSchema = z.object({
53
+ score: z.number().int().min(0),
54
+ total: z.number().int().positive(),
55
+ percentage: z.number().int().min(0).max(100),
56
+ results: z.array(gradeQuizResultItemSchema),
57
+ });
58
+ export function gradeQuiz(options) {
59
+ const parsed = gradeQuizOptionsSchema.safeParse(options);
60
+ if (!parsed.success) {
61
+ throw new InvalidInputError(parsed.error.issues[0]?.message ?? "Invalid quiz grading options");
62
+ }
63
+ const { questions, answers } = parsed.data;
64
+ const results = questions.map((question, index) => {
65
+ const selectedAnswer = answers[index];
66
+ const isAnswered = selectedAnswer !== null;
67
+ const isCorrect = isAnswered && selectedAnswer === question.correctAnswer;
68
+ return {
69
+ questionIndex: index,
70
+ selectedAnswer,
71
+ correctAnswer: question.correctAnswer,
72
+ isCorrect,
73
+ isAnswered,
74
+ };
75
+ });
76
+ const score = results.reduce((total, result) => total + (result.isCorrect ? 1 : 0), 0);
77
+ const total = questions.length;
78
+ const percentage = Math.round((score / total) * 100);
79
+ return { score, total, percentage, results };
80
+ }
81
+ //# sourceMappingURL=gradeQuiz.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gradeQuiz.js","sourceRoot":"","sources":["../../src/quizzes/gradeQuiz.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "edu-sdk",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "license": "MIT",
5
5
  "repository": {
6
6
  "type": "git",
7
- "url": "git+https://github.com/Tobi3333A/edu-sdk.git",
7
+ "url": "git+https://github.com/klawrodev/edu-sdk.git",
8
8
  "directory": "packages/core"
9
9
  },
10
10
  "type": "module",