@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.
- package/LICENSE +21 -0
- package/README.md +415 -0
- package/bin/question-banks.js +16 -0
- package/dist/assessment-EEJoYtXy.d.cts +351 -0
- package/dist/assessment-EEJoYtXy.d.ts +351 -0
- package/dist/cli/index.cjs +855 -0
- package/dist/cli/index.cjs.map +1 -0
- package/dist/cli/index.d.cts +18 -0
- package/dist/cli/index.d.ts +18 -0
- package/dist/cli/index.js +852 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/index-BPlb4Ksx.d.cts +76 -0
- package/dist/index-BdbmdJgH.d.ts +76 -0
- package/dist/index.cjs +452 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +213 -0
- package/dist/index.d.ts +213 -0
- package/dist/index.js +429 -0
- package/dist/index.js.map +1 -0
- package/dist/premium/index.cjs +116 -0
- package/dist/premium/index.cjs.map +1 -0
- package/dist/premium/index.d.cts +96 -0
- package/dist/premium/index.d.ts +96 -0
- package/dist/premium/index.js +114 -0
- package/dist/premium/index.js.map +1 -0
- package/dist/schemas/index.cjs +242 -0
- package/dist/schemas/index.cjs.map +1 -0
- package/dist/schemas/index.d.cts +1465 -0
- package/dist/schemas/index.d.ts +1465 -0
- package/dist/schemas/index.js +220 -0
- package/dist/schemas/index.js.map +1 -0
- package/dist/validation/index.cjs +306 -0
- package/dist/validation/index.cjs.map +1 -0
- package/dist/validation/index.d.cts +47 -0
- package/dist/validation/index.d.ts +47 -0
- package/dist/validation/index.js +304 -0
- package/dist/validation/index.js.map +1 -0
- package/package.json +85 -0
package/dist/index.d.cts
ADDED
|
@@ -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 };
|
package/dist/index.d.ts
ADDED
|
@@ -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 };
|