@telebort/question-banks 1.0.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.
@@ -0,0 +1,213 @@
1
+ import { Course, Lesson, Question } from './schemas/index.cjs';
2
+ export { BloomsTaxonomy, BloomsTaxonomySchema, CourseDomain, CourseDomainSchema, CourseSchema, CourseSummary, CourseSummarySchema, CourseTier, CourseTierSchema, Difficulty, DifficultySchema, Feedback, FeedbackSchema, LessonSchema, Option, OptionKey, OptionKeySchema, OptionSchema, QuestionArchetype, QuestionArchetypeSchema, QuestionMetadata, QuestionMetadataSchema, QuestionSchema, QuestionType, QuestionTypeSchema, QuestionWithoutAnswer, QuestionWithoutAnswerSchema } from './schemas/index.cjs';
3
+ export { c as AssessmentSubmission, A as AssessmentSubmissionSchema, f as GradedAssessment, a as GradedAssessmentSchema, d as GradedResponse, G as GradedResponseSchema, e as MisconceptionReport, M as MisconceptionReportSchema, b as UserResponse, U as UserResponseSchema, g as ValidationResult, V as ValidationResultSchema } from './assessment-EEJoYtXy.cjs';
4
+ import { Q as QuestionFilters, a as QuizCriteria, S as SearchOptions, b as Statistics, E as ExitTicketsConfig } from './index-BPlb4Ksx.cjs';
5
+ export { C as CacheAdapter, D as DataSource } from './index-BPlb4Ksx.cjs';
6
+ import 'zod';
7
+
8
+ /**
9
+ * Core interfaces for the Exit Tickets SDK
10
+ */
11
+
12
+ /**
13
+ * Query result with pagination
14
+ */
15
+ interface QueryResult<T> {
16
+ data: T[];
17
+ total: number;
18
+ limit: number;
19
+ offset: number;
20
+ hasMore: boolean;
21
+ }
22
+ /**
23
+ * Data loader service interface
24
+ */
25
+ interface IDataLoader {
26
+ loadCourses(): Promise<Course[]>;
27
+ getCourse(courseId: string): Promise<Course | null>;
28
+ getLesson(courseId: string, lessonNumber: number): Promise<Lesson | null>;
29
+ getQuestion(questionId: string): Promise<Question | null>;
30
+ getQuestionByGlobalId(globalId: string): Promise<Question | null>;
31
+ getAllQuestions(): Promise<Question[]>;
32
+ }
33
+ /**
34
+ * Query service interface
35
+ */
36
+ interface IQueryService {
37
+ filterQuestions(filters: QuestionFilters): Promise<QueryResult<Question>>;
38
+ getRandomQuestions(count: number, filters?: QuestionFilters): Promise<Question[]>;
39
+ getQuestionTypes(): Promise<string[]>;
40
+ getDifficulties(): Promise<string[]>;
41
+ getAllTags(): Promise<string[]>;
42
+ }
43
+ /**
44
+ * Quiz generator service interface
45
+ */
46
+ interface IQuizGenerator {
47
+ generateQuiz(criteria: QuizCriteria): Promise<{
48
+ questions: Question[];
49
+ metadata: {
50
+ distribution: Record<string, number>;
51
+ timestamp: string;
52
+ };
53
+ }>;
54
+ getLessonQuiz(courseId: string, lessonNumber: number): Promise<Question[]>;
55
+ }
56
+ /**
57
+ * Search service interface
58
+ */
59
+ interface ISearchService {
60
+ search(options: SearchOptions): Promise<QueryResult<Question & {
61
+ relevanceScore: number;
62
+ }>>;
63
+ searchByTags(tags: string[], matchAll?: boolean): Promise<Question[]>;
64
+ }
65
+ /**
66
+ * Analytics service interface
67
+ */
68
+ interface IAnalyticsService {
69
+ getStatistics(): Promise<Statistics>;
70
+ getCourseStatistics(courseId: string): Promise<Statistics & {
71
+ courseId: string;
72
+ }>;
73
+ }
74
+ /**
75
+ * Validation service interface (for answer checking)
76
+ */
77
+ interface IValidationService {
78
+ validateAnswer(questionId: string, answer: string, mode: 'formative' | 'summative'): Promise<{
79
+ isCorrect: boolean;
80
+ feedback?: {
81
+ short: string;
82
+ detailed?: string;
83
+ socraticHint?: string;
84
+ };
85
+ misconceptionId?: string | null;
86
+ correctAnswer?: string;
87
+ }>;
88
+ }
89
+
90
+ /**
91
+ * @telebort/exit-tickets - Exit Tickets SDK
92
+ *
93
+ * Three-tier access to exit ticket questions and assessments:
94
+ *
95
+ * ## Free Tier - Schemas
96
+ * ```typescript
97
+ * import { QuestionSchema } from '@telebort/exit-tickets/schemas'
98
+ * ```
99
+ *
100
+ * ## Standard Tier - Validation API
101
+ * ```typescript
102
+ * import { ValidationClient } from '@telebort/exit-tickets/validation'
103
+ * ```
104
+ *
105
+ * ## Premium Tier - Full Access
106
+ * ```typescript
107
+ * import { PremiumClient } from '@telebort/exit-tickets/premium'
108
+ * ```
109
+ *
110
+ * ## SDK Factory (for custom data sources)
111
+ * ```typescript
112
+ * import { createExitTicketsSDK } from '@telebort/exit-tickets'
113
+ *
114
+ * const sdk = createExitTicketsSDK({
115
+ * dataSource: {
116
+ * async loadCourses() {
117
+ * return myQuestionData
118
+ * }
119
+ * }
120
+ * })
121
+ * ```
122
+ */
123
+
124
+ /**
125
+ * Exit Tickets SDK instance
126
+ */
127
+ interface ExitTicketsSDK {
128
+ /**
129
+ * Data access methods
130
+ */
131
+ data: {
132
+ getCourses(): Promise<Course[]>;
133
+ getCourse(courseId: string): Promise<Course | null>;
134
+ getLesson(courseId: string, lessonNumber: number): Promise<Lesson | null>;
135
+ getQuestion(questionId: string): Promise<Question | null>;
136
+ getAllQuestions(): Promise<Question[]>;
137
+ };
138
+ /**
139
+ * Query methods
140
+ */
141
+ query: {
142
+ filterQuestions(filters: QuestionFilters): Promise<QueryResult<Question>>;
143
+ getRandomQuestions(count: number, filters?: QuestionFilters): Promise<Question[]>;
144
+ };
145
+ /**
146
+ * Quiz generation
147
+ */
148
+ quiz: {
149
+ generateQuiz(criteria: QuizCriteria): Promise<{
150
+ questions: Question[];
151
+ metadata: Record<string, unknown>;
152
+ }>;
153
+ getLessonQuiz(courseId: string, lessonNumber: number): Promise<Question[]>;
154
+ };
155
+ /**
156
+ * Search
157
+ */
158
+ search: {
159
+ search(options: SearchOptions): Promise<QueryResult<Question & {
160
+ relevanceScore: number;
161
+ }>>;
162
+ searchByTags(tags: string[], matchAll?: boolean): Promise<Question[]>;
163
+ };
164
+ /**
165
+ * Analytics
166
+ */
167
+ analytics: {
168
+ getStatistics(): Promise<Statistics>;
169
+ getCourseStatistics(courseId: string): Promise<Statistics & {
170
+ courseId: string;
171
+ }>;
172
+ };
173
+ /**
174
+ * Answer validation (requires question data loaded)
175
+ */
176
+ validate: {
177
+ checkAnswer(questionId: string, answer: string, mode: 'formative' | 'summative'): Promise<{
178
+ isCorrect: boolean;
179
+ feedback?: {
180
+ short: string;
181
+ detailed?: string;
182
+ socraticHint?: string;
183
+ };
184
+ misconceptionId?: string | null;
185
+ correctAnswer?: string;
186
+ }>;
187
+ };
188
+ }
189
+ /**
190
+ * Create an Exit Tickets SDK instance
191
+ *
192
+ * @param config - SDK configuration with data source
193
+ * @returns SDK instance with all services
194
+ *
195
+ * @example
196
+ * ```typescript
197
+ * // Using static JSON import
198
+ * import coursesData from './data/courses.json'
199
+ *
200
+ * const sdk = createExitTicketsSDK({
201
+ * dataSource: {
202
+ * async loadCourses() {
203
+ * return coursesData
204
+ * }
205
+ * }
206
+ * })
207
+ *
208
+ * const questions = await sdk.query.filterQuestions({ courseId: 'ai-1' })
209
+ * ```
210
+ */
211
+ declare function createExitTicketsSDK(config: ExitTicketsConfig): ExitTicketsSDK;
212
+
213
+ export { Course, ExitTicketsConfig, type ExitTicketsSDK, type IAnalyticsService, type IDataLoader, type IQueryService, type IQuizGenerator, type ISearchService, type IValidationService, Lesson, type QueryResult, Question, QuestionFilters, QuizCriteria, SearchOptions, Statistics, createExitTicketsSDK };
@@ -0,0 +1,213 @@
1
+ import { Course, Lesson, Question } from './schemas/index.js';
2
+ export { BloomsTaxonomy, BloomsTaxonomySchema, CourseDomain, CourseDomainSchema, CourseSchema, CourseSummary, CourseSummarySchema, CourseTier, CourseTierSchema, Difficulty, DifficultySchema, Feedback, FeedbackSchema, LessonSchema, Option, OptionKey, OptionKeySchema, OptionSchema, QuestionArchetype, QuestionArchetypeSchema, QuestionMetadata, QuestionMetadataSchema, QuestionSchema, QuestionType, QuestionTypeSchema, QuestionWithoutAnswer, QuestionWithoutAnswerSchema } from './schemas/index.js';
3
+ export { c as AssessmentSubmission, A as AssessmentSubmissionSchema, f as GradedAssessment, a as GradedAssessmentSchema, d as GradedResponse, G as GradedResponseSchema, e as MisconceptionReport, M as MisconceptionReportSchema, b as UserResponse, U as UserResponseSchema, g as ValidationResult, V as ValidationResultSchema } from './assessment-EEJoYtXy.js';
4
+ import { Q as QuestionFilters, a as QuizCriteria, S as SearchOptions, b as Statistics, E as ExitTicketsConfig } from './index-BdbmdJgH.js';
5
+ export { C as CacheAdapter, D as DataSource } from './index-BdbmdJgH.js';
6
+ import 'zod';
7
+
8
+ /**
9
+ * Core interfaces for the Exit Tickets SDK
10
+ */
11
+
12
+ /**
13
+ * Query result with pagination
14
+ */
15
+ interface QueryResult<T> {
16
+ data: T[];
17
+ total: number;
18
+ limit: number;
19
+ offset: number;
20
+ hasMore: boolean;
21
+ }
22
+ /**
23
+ * Data loader service interface
24
+ */
25
+ interface IDataLoader {
26
+ loadCourses(): Promise<Course[]>;
27
+ getCourse(courseId: string): Promise<Course | null>;
28
+ getLesson(courseId: string, lessonNumber: number): Promise<Lesson | null>;
29
+ getQuestion(questionId: string): Promise<Question | null>;
30
+ getQuestionByGlobalId(globalId: string): Promise<Question | null>;
31
+ getAllQuestions(): Promise<Question[]>;
32
+ }
33
+ /**
34
+ * Query service interface
35
+ */
36
+ interface IQueryService {
37
+ filterQuestions(filters: QuestionFilters): Promise<QueryResult<Question>>;
38
+ getRandomQuestions(count: number, filters?: QuestionFilters): Promise<Question[]>;
39
+ getQuestionTypes(): Promise<string[]>;
40
+ getDifficulties(): Promise<string[]>;
41
+ getAllTags(): Promise<string[]>;
42
+ }
43
+ /**
44
+ * Quiz generator service interface
45
+ */
46
+ interface IQuizGenerator {
47
+ generateQuiz(criteria: QuizCriteria): Promise<{
48
+ questions: Question[];
49
+ metadata: {
50
+ distribution: Record<string, number>;
51
+ timestamp: string;
52
+ };
53
+ }>;
54
+ getLessonQuiz(courseId: string, lessonNumber: number): Promise<Question[]>;
55
+ }
56
+ /**
57
+ * Search service interface
58
+ */
59
+ interface ISearchService {
60
+ search(options: SearchOptions): Promise<QueryResult<Question & {
61
+ relevanceScore: number;
62
+ }>>;
63
+ searchByTags(tags: string[], matchAll?: boolean): Promise<Question[]>;
64
+ }
65
+ /**
66
+ * Analytics service interface
67
+ */
68
+ interface IAnalyticsService {
69
+ getStatistics(): Promise<Statistics>;
70
+ getCourseStatistics(courseId: string): Promise<Statistics & {
71
+ courseId: string;
72
+ }>;
73
+ }
74
+ /**
75
+ * Validation service interface (for answer checking)
76
+ */
77
+ interface IValidationService {
78
+ validateAnswer(questionId: string, answer: string, mode: 'formative' | 'summative'): Promise<{
79
+ isCorrect: boolean;
80
+ feedback?: {
81
+ short: string;
82
+ detailed?: string;
83
+ socraticHint?: string;
84
+ };
85
+ misconceptionId?: string | null;
86
+ correctAnswer?: string;
87
+ }>;
88
+ }
89
+
90
+ /**
91
+ * @telebort/exit-tickets - Exit Tickets SDK
92
+ *
93
+ * Three-tier access to exit ticket questions and assessments:
94
+ *
95
+ * ## Free Tier - Schemas
96
+ * ```typescript
97
+ * import { QuestionSchema } from '@telebort/exit-tickets/schemas'
98
+ * ```
99
+ *
100
+ * ## Standard Tier - Validation API
101
+ * ```typescript
102
+ * import { ValidationClient } from '@telebort/exit-tickets/validation'
103
+ * ```
104
+ *
105
+ * ## Premium Tier - Full Access
106
+ * ```typescript
107
+ * import { PremiumClient } from '@telebort/exit-tickets/premium'
108
+ * ```
109
+ *
110
+ * ## SDK Factory (for custom data sources)
111
+ * ```typescript
112
+ * import { createExitTicketsSDK } from '@telebort/exit-tickets'
113
+ *
114
+ * const sdk = createExitTicketsSDK({
115
+ * dataSource: {
116
+ * async loadCourses() {
117
+ * return myQuestionData
118
+ * }
119
+ * }
120
+ * })
121
+ * ```
122
+ */
123
+
124
+ /**
125
+ * Exit Tickets SDK instance
126
+ */
127
+ interface ExitTicketsSDK {
128
+ /**
129
+ * Data access methods
130
+ */
131
+ data: {
132
+ getCourses(): Promise<Course[]>;
133
+ getCourse(courseId: string): Promise<Course | null>;
134
+ getLesson(courseId: string, lessonNumber: number): Promise<Lesson | null>;
135
+ getQuestion(questionId: string): Promise<Question | null>;
136
+ getAllQuestions(): Promise<Question[]>;
137
+ };
138
+ /**
139
+ * Query methods
140
+ */
141
+ query: {
142
+ filterQuestions(filters: QuestionFilters): Promise<QueryResult<Question>>;
143
+ getRandomQuestions(count: number, filters?: QuestionFilters): Promise<Question[]>;
144
+ };
145
+ /**
146
+ * Quiz generation
147
+ */
148
+ quiz: {
149
+ generateQuiz(criteria: QuizCriteria): Promise<{
150
+ questions: Question[];
151
+ metadata: Record<string, unknown>;
152
+ }>;
153
+ getLessonQuiz(courseId: string, lessonNumber: number): Promise<Question[]>;
154
+ };
155
+ /**
156
+ * Search
157
+ */
158
+ search: {
159
+ search(options: SearchOptions): Promise<QueryResult<Question & {
160
+ relevanceScore: number;
161
+ }>>;
162
+ searchByTags(tags: string[], matchAll?: boolean): Promise<Question[]>;
163
+ };
164
+ /**
165
+ * Analytics
166
+ */
167
+ analytics: {
168
+ getStatistics(): Promise<Statistics>;
169
+ getCourseStatistics(courseId: string): Promise<Statistics & {
170
+ courseId: string;
171
+ }>;
172
+ };
173
+ /**
174
+ * Answer validation (requires question data loaded)
175
+ */
176
+ validate: {
177
+ checkAnswer(questionId: string, answer: string, mode: 'formative' | 'summative'): Promise<{
178
+ isCorrect: boolean;
179
+ feedback?: {
180
+ short: string;
181
+ detailed?: string;
182
+ socraticHint?: string;
183
+ };
184
+ misconceptionId?: string | null;
185
+ correctAnswer?: string;
186
+ }>;
187
+ };
188
+ }
189
+ /**
190
+ * Create an Exit Tickets SDK instance
191
+ *
192
+ * @param config - SDK configuration with data source
193
+ * @returns SDK instance with all services
194
+ *
195
+ * @example
196
+ * ```typescript
197
+ * // Using static JSON import
198
+ * import coursesData from './data/courses.json'
199
+ *
200
+ * const sdk = createExitTicketsSDK({
201
+ * dataSource: {
202
+ * async loadCourses() {
203
+ * return coursesData
204
+ * }
205
+ * }
206
+ * })
207
+ *
208
+ * const questions = await sdk.query.filterQuestions({ courseId: 'ai-1' })
209
+ * ```
210
+ */
211
+ declare function createExitTicketsSDK(config: ExitTicketsConfig): ExitTicketsSDK;
212
+
213
+ export { Course, ExitTicketsConfig, type ExitTicketsSDK, type IAnalyticsService, type IDataLoader, type IQueryService, type IQuizGenerator, type ISearchService, type IValidationService, Lesson, type QueryResult, Question, QuestionFilters, QuizCriteria, SearchOptions, Statistics, createExitTicketsSDK };