@thanh01.pmt/interactive-quiz-kit 1.0.56 → 1.0.58

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/dist/index.cjs CHANGED
@@ -2631,8 +2631,6 @@ var LocalStorageManager = class {
2631
2631
  this.saveAll([...items, newItem]);
2632
2632
  return newItem;
2633
2633
  }
2634
- // ===== FIX IS HERE =====
2635
- // Changed the type of 'updates' to allow 'code' to be part of the update object.
2636
2634
  update(id, updates) {
2637
2635
  const items = this.getAll();
2638
2636
  const index = items.findIndex((i) => i.id === id);
@@ -2645,7 +2643,6 @@ var LocalStorageManager = class {
2645
2643
  this.saveAll(items);
2646
2644
  return updatedItem;
2647
2645
  }
2648
- // =======================
2649
2646
  delete(code) {
2650
2647
  const items = this.getAll();
2651
2648
  const newItems = items.filter((i) => i.code !== code);
@@ -2679,81 +2676,84 @@ function mapRawDifficultyToStandard(rawDifficulty) {
2679
2676
  return "medium";
2680
2677
  }
2681
2678
  }
2682
- var _MetadataService = class _MetadataService {
2679
+ var MetadataService = class {
2683
2680
  };
2684
2681
  // --- Subject Services ---
2685
- _MetadataService.getSubjects = () => subjectManager.getAll().sort((a, b) => a.name.localeCompare(b.name));
2686
- _MetadataService.addSubject = (name, code) => {
2687
- return subjectManager.add({ code, name, createdAt: (/* @__PURE__ */ new Date()).toISOString(), updatedAt: (/* @__PURE__ */ new Date()).toISOString() });
2688
- };
2689
- _MetadataService.updateSubject = (id, name, code) => {
2690
- return subjectManager.update(id, { name, code, updatedAt: (/* @__PURE__ */ new Date()).toISOString() });
2691
- };
2692
- _MetadataService.deleteSubject = (code) => {
2693
- const topics = _MetadataService.getTopics(code);
2694
- if (topics.length > 0) {
2682
+ MetadataService.getSubjects = () => subjectManager.getAll().sort((a, b) => a.name.localeCompare(b.name));
2683
+ MetadataService.saveSubjects = (items) => subjectManager.saveAll(items);
2684
+ MetadataService.addSubject = (name, code) => subjectManager.add({ code, name, createdAt: (/* @__PURE__ */ new Date()).toISOString(), updatedAt: (/* @__PURE__ */ new Date()).toISOString() });
2685
+ MetadataService.updateSubject = (id, name, code) => subjectManager.update(id, { name, code, updatedAt: (/* @__PURE__ */ new Date()).toISOString() });
2686
+ MetadataService.deleteSubject = (code) => {
2687
+ if (topicManager.getAll().some((t) => t.subjectCode === code)) {
2695
2688
  throw new Error("Cannot delete subject: It is referenced by topics.");
2696
2689
  }
2697
2690
  return subjectManager.delete(code);
2698
2691
  };
2699
2692
  // --- GradeLevel Services ---
2700
- _MetadataService.getGradeLevels = () => gradeLevelManager.getAll().sort((a, b) => a.name.localeCompare(b.name));
2701
- _MetadataService.addGradeLevel = (name, code) => gradeLevelManager.add({ name, code });
2702
- _MetadataService.updateGradeLevel = (id, name, code) => gradeLevelManager.update(id, { name, code });
2703
- _MetadataService.deleteGradeLevel = (code) => gradeLevelManager.delete(code);
2693
+ MetadataService.getGradeLevels = () => gradeLevelManager.getAll().sort((a, b) => a.name.localeCompare(b.name));
2694
+ MetadataService.saveGradeLevels = (items) => gradeLevelManager.saveAll(items);
2695
+ MetadataService.addGradeLevel = (name, code) => gradeLevelManager.add({ name, code });
2696
+ MetadataService.updateGradeLevel = (id, name, code) => gradeLevelManager.update(id, { name, code });
2697
+ MetadataService.deleteGradeLevel = (code) => gradeLevelManager.delete(code);
2704
2698
  // --- Topic Services ---
2705
- _MetadataService.getTopics = (subjectCode) => {
2699
+ MetadataService.getTopics = (subjectCode) => {
2706
2700
  const allTopics = topicManager.getAll();
2707
2701
  const filtered = subjectCode ? allTopics.filter((t) => t.subjectCode === subjectCode) : allTopics;
2708
2702
  return filtered.sort((a, b) => a.name.localeCompare(b.name));
2709
2703
  };
2710
- _MetadataService.addTopic = (name, code, subjectCode) => topicManager.add({ name, code, subjectCode });
2711
- _MetadataService.updateTopic = (id, name, code, subjectCode) => topicManager.update(id, { name, code, subjectCode });
2712
- _MetadataService.deleteTopic = (code) => topicManager.delete(code);
2704
+ MetadataService.saveTopics = (items) => topicManager.saveAll(items);
2705
+ MetadataService.addTopic = (name, code, subjectCode) => topicManager.add({ name, code, subjectCode });
2706
+ MetadataService.updateTopic = (id, name, code, subjectCode) => topicManager.update(id, { name, code, subjectCode });
2707
+ MetadataService.deleteTopic = (code) => topicManager.delete(code);
2713
2708
  // --- BloomLevel Services ---
2714
- _MetadataService.getBloomLevels = () => bloomLevelManager.getAll().sort((a, b) => a.name.localeCompare(b.name));
2715
- _MetadataService.addBloomLevel = (name, code, description) => bloomLevelManager.add({ name, code, description });
2716
- _MetadataService.updateBloomLevel = (id, name, code, description) => bloomLevelManager.update(id, { name, code, description });
2717
- _MetadataService.deleteBloomLevel = (code) => bloomLevelManager.delete(code);
2709
+ MetadataService.getBloomLevels = () => bloomLevelManager.getAll().sort((a, b) => a.name.localeCompare(b.name));
2710
+ MetadataService.saveBloomLevels = (items) => bloomLevelManager.saveAll(items);
2711
+ MetadataService.addBloomLevel = (name, code, description) => bloomLevelManager.add({ name, code, description });
2712
+ MetadataService.updateBloomLevel = (id, name, code, description) => bloomLevelManager.update(id, { name, code, description });
2713
+ MetadataService.deleteBloomLevel = (code) => bloomLevelManager.delete(code);
2718
2714
  // --- QuestionType Services ---
2719
- _MetadataService.getQuestionTypes = () => questionTypeManager.getAll().sort((a, b) => a.name.localeCompare(b.name));
2720
- _MetadataService.addQuestionType = (name, code, description) => questionTypeManager.add({ name, code, description });
2721
- _MetadataService.updateQuestionType = (id, name, code, description) => questionTypeManager.update(id, { name, code, description });
2722
- _MetadataService.deleteQuestionType = (code) => questionTypeManager.delete(code);
2715
+ MetadataService.getQuestionTypes = () => questionTypeManager.getAll().sort((a, b) => a.name.localeCompare(b.name));
2716
+ MetadataService.saveQuestionTypes = (items) => questionTypeManager.saveAll(items);
2717
+ MetadataService.addQuestionType = (name, code, description) => questionTypeManager.add({ name, code, description });
2718
+ MetadataService.updateQuestionType = (id, name, code, description) => questionTypeManager.update(id, { name, code, description });
2719
+ MetadataService.deleteQuestionType = (code) => questionTypeManager.delete(code);
2723
2720
  // --- Category Services ---
2724
- _MetadataService.getCategories = () => categoryManager.getAll().sort((a, b) => a.name.localeCompare(b.name));
2725
- _MetadataService.addCategory = (name, code, description) => categoryManager.add({ name, code, description });
2726
- _MetadataService.updateCategory = (id, name, code, description) => categoryManager.update(id, { name, code, description });
2727
- _MetadataService.deleteCategory = (code) => categoryManager.delete(code);
2721
+ MetadataService.getCategories = () => categoryManager.getAll().sort((a, b) => a.name.localeCompare(b.name));
2722
+ MetadataService.saveCategories = (items) => categoryManager.saveAll(items);
2723
+ MetadataService.addCategory = (name, code, description) => categoryManager.add({ name, code, description });
2724
+ MetadataService.updateCategory = (id, name, code, description) => categoryManager.update(id, { name, code, description });
2725
+ MetadataService.deleteCategory = (code) => categoryManager.delete(code);
2728
2726
  // --- Context Services ---
2729
- _MetadataService.getContexts = () => contextManager.getAll().sort((a, b) => a.name.localeCompare(b.name));
2730
- _MetadataService.addContext = (name, code, description) => contextManager.add({ name, code, description });
2731
- _MetadataService.updateContext = (id, name, code, description) => contextManager.update(id, { name, code, description });
2732
- _MetadataService.deleteContext = (code) => contextManager.delete(code);
2727
+ MetadataService.getContexts = () => contextManager.getAll().sort((a, b) => a.name.localeCompare(b.name));
2728
+ MetadataService.saveContexts = (items) => contextManager.saveAll(items);
2729
+ MetadataService.addContext = (name, code, description) => contextManager.add({ name, code, description });
2730
+ MetadataService.updateContext = (id, name, code, description) => contextManager.update(id, { name, code, description });
2731
+ MetadataService.deleteContext = (code) => contextManager.delete(code);
2733
2732
  // --- Approach Services ---
2734
- _MetadataService.getApproaches = () => approachManager.getAll().sort((a, b) => a.code.localeCompare(b.code));
2735
- _MetadataService.addApproach = (approachData) => {
2733
+ MetadataService.getApproaches = () => approachManager.getAll().sort((a, b) => a.code.localeCompare(b.code));
2734
+ MetadataService.saveApproaches = (items) => approachManager.saveAll(items);
2735
+ MetadataService.addApproach = (approachData) => {
2736
2736
  const difficulty = mapRawDifficultyToStandard(approachData.rawDifficulty);
2737
2737
  return approachManager.add({ ...approachData, difficulty });
2738
2738
  };
2739
- _MetadataService.updateApproach = (id, approachData) => {
2739
+ MetadataService.updateApproach = (id, approachData) => {
2740
2740
  const updates = { ...approachData };
2741
2741
  if (approachData.rawDifficulty) {
2742
2742
  updates.difficulty = mapRawDifficultyToStandard(approachData.rawDifficulty);
2743
2743
  }
2744
2744
  return approachManager.update(id, updates);
2745
2745
  };
2746
- _MetadataService.deleteApproach = (code) => approachManager.delete(code);
2746
+ MetadataService.deleteApproach = (code) => approachManager.delete(code);
2747
2747
  // --- LearningObjective Services ---
2748
- _MetadataService.getLearningObjectives = (subjectCode) => {
2748
+ MetadataService.getLearningObjectives = (subjectCode) => {
2749
2749
  const allLOs = learningObjectiveManager.getAll();
2750
2750
  const filtered = subjectCode ? allLOs.filter((lo) => lo.subjectCode === subjectCode) : allLOs;
2751
2751
  return filtered.sort((a, b) => a.name.localeCompare(b.name));
2752
2752
  };
2753
- _MetadataService.addLearningObjective = (name, code, subjectCode, description) => learningObjectiveManager.add({ name, code, subjectCode, description });
2754
- _MetadataService.updateLearningObjective = (id, name, code, subjectCode, description) => learningObjectiveManager.update(id, { name, code, subjectCode, description });
2755
- _MetadataService.deleteLearningObjective = (code) => learningObjectiveManager.delete(code);
2756
- var MetadataService = _MetadataService;
2753
+ MetadataService.saveLearningObjectives = (items) => learningObjectiveManager.saveAll(items);
2754
+ MetadataService.addLearningObjective = (name, code, subjectCode, description) => learningObjectiveManager.add({ name, code, subjectCode, description });
2755
+ MetadataService.updateLearningObjective = (id, name, code, subjectCode, description) => learningObjectiveManager.update(id, { name, code, subjectCode, description });
2756
+ MetadataService.deleteLearningObjective = (code) => learningObjectiveManager.delete(code);
2757
2757
 
2758
2758
  // src/services/questionBankService.ts
2759
2759
  var LocalStorageManager2 = class {
package/dist/index.d.cts CHANGED
@@ -329,38 +329,47 @@ declare class KnowledgeCardService {
329
329
 
330
330
  declare class MetadataService {
331
331
  static getSubjects: () => Subject[];
332
+ static saveSubjects: (items: Subject[]) => void;
332
333
  static addSubject: (name: string, code: string) => Subject;
333
334
  static updateSubject: (id: string, name: string, code: string) => Subject | null;
334
335
  static deleteSubject: (code: string) => boolean;
335
336
  static getGradeLevels: () => GradeLevel[];
337
+ static saveGradeLevels: (items: GradeLevel[]) => void;
336
338
  static addGradeLevel: (name: string, code: string) => GradeLevel;
337
339
  static updateGradeLevel: (id: string, name: string, code: string) => GradeLevel | null;
338
340
  static deleteGradeLevel: (code: string) => boolean;
339
341
  static getTopics: (subjectCode?: string) => Topic[];
342
+ static saveTopics: (items: Topic[]) => void;
340
343
  static addTopic: (name: string, code: string, subjectCode: string) => Topic;
341
344
  static updateTopic: (id: string, name: string, code: string, subjectCode: string) => Topic | null;
342
345
  static deleteTopic: (code: string) => boolean;
343
346
  static getBloomLevels: () => BloomLevelType[];
347
+ static saveBloomLevels: (items: BloomLevelType[]) => void;
344
348
  static addBloomLevel: (name: string, code: string, description?: string) => BloomLevelType;
345
349
  static updateBloomLevel: (id: string, name: string, code: string, description?: string) => BloomLevelType | null;
346
350
  static deleteBloomLevel: (code: string) => boolean;
347
351
  static getQuestionTypes: () => QuestionTypeType[];
352
+ static saveQuestionTypes: (items: QuestionTypeType[]) => void;
348
353
  static addQuestionType: (name: string, code: string, description?: string) => QuestionTypeType;
349
354
  static updateQuestionType: (id: string, name: string, code: string, description?: string) => QuestionTypeType | null;
350
355
  static deleteQuestionType: (code: string) => boolean;
351
356
  static getCategories: () => Category[];
357
+ static saveCategories: (items: Category[]) => void;
352
358
  static addCategory: (name: string, code: string, description?: string) => Category;
353
359
  static updateCategory: (id: string, name: string, code: string, description?: string) => Category | null;
354
360
  static deleteCategory: (code: string) => boolean;
355
361
  static getContexts: () => Context[];
362
+ static saveContexts: (items: Context[]) => void;
356
363
  static addContext: (name: string, code: string, description?: string) => Context;
357
364
  static updateContext: (id: string, name: string, code: string, description?: string) => Context | null;
358
365
  static deleteContext: (code: string) => boolean;
359
366
  static getApproaches: () => Approach[];
367
+ static saveApproaches: (items: Approach[]) => void;
360
368
  static addApproach: (approachData: Omit<Approach, "id" | "difficulty">) => Approach;
361
369
  static updateApproach: (id: string, approachData: Partial<Omit<Approach, "id" | "difficulty">>) => Approach | null;
362
370
  static deleteApproach: (code: string) => boolean;
363
371
  static getLearningObjectives: (subjectCode?: string) => LearningObjectiveMetadata[];
372
+ static saveLearningObjectives: (items: LearningObjectiveMetadata[]) => void;
364
373
  static addLearningObjective: (name: string, code: string, subjectCode?: string, description?: string) => LearningObjectiveMetadata;
365
374
  static updateLearningObjective: (id: string, name: string, code: string, subjectCode?: string, description?: string) => LearningObjectiveMetadata | null;
366
375
  static deleteLearningObjective: (code: string) => boolean;
package/dist/index.d.ts CHANGED
@@ -329,38 +329,47 @@ declare class KnowledgeCardService {
329
329
 
330
330
  declare class MetadataService {
331
331
  static getSubjects: () => Subject[];
332
+ static saveSubjects: (items: Subject[]) => void;
332
333
  static addSubject: (name: string, code: string) => Subject;
333
334
  static updateSubject: (id: string, name: string, code: string) => Subject | null;
334
335
  static deleteSubject: (code: string) => boolean;
335
336
  static getGradeLevels: () => GradeLevel[];
337
+ static saveGradeLevels: (items: GradeLevel[]) => void;
336
338
  static addGradeLevel: (name: string, code: string) => GradeLevel;
337
339
  static updateGradeLevel: (id: string, name: string, code: string) => GradeLevel | null;
338
340
  static deleteGradeLevel: (code: string) => boolean;
339
341
  static getTopics: (subjectCode?: string) => Topic[];
342
+ static saveTopics: (items: Topic[]) => void;
340
343
  static addTopic: (name: string, code: string, subjectCode: string) => Topic;
341
344
  static updateTopic: (id: string, name: string, code: string, subjectCode: string) => Topic | null;
342
345
  static deleteTopic: (code: string) => boolean;
343
346
  static getBloomLevels: () => BloomLevelType[];
347
+ static saveBloomLevels: (items: BloomLevelType[]) => void;
344
348
  static addBloomLevel: (name: string, code: string, description?: string) => BloomLevelType;
345
349
  static updateBloomLevel: (id: string, name: string, code: string, description?: string) => BloomLevelType | null;
346
350
  static deleteBloomLevel: (code: string) => boolean;
347
351
  static getQuestionTypes: () => QuestionTypeType[];
352
+ static saveQuestionTypes: (items: QuestionTypeType[]) => void;
348
353
  static addQuestionType: (name: string, code: string, description?: string) => QuestionTypeType;
349
354
  static updateQuestionType: (id: string, name: string, code: string, description?: string) => QuestionTypeType | null;
350
355
  static deleteQuestionType: (code: string) => boolean;
351
356
  static getCategories: () => Category[];
357
+ static saveCategories: (items: Category[]) => void;
352
358
  static addCategory: (name: string, code: string, description?: string) => Category;
353
359
  static updateCategory: (id: string, name: string, code: string, description?: string) => Category | null;
354
360
  static deleteCategory: (code: string) => boolean;
355
361
  static getContexts: () => Context[];
362
+ static saveContexts: (items: Context[]) => void;
356
363
  static addContext: (name: string, code: string, description?: string) => Context;
357
364
  static updateContext: (id: string, name: string, code: string, description?: string) => Context | null;
358
365
  static deleteContext: (code: string) => boolean;
359
366
  static getApproaches: () => Approach[];
367
+ static saveApproaches: (items: Approach[]) => void;
360
368
  static addApproach: (approachData: Omit<Approach, "id" | "difficulty">) => Approach;
361
369
  static updateApproach: (id: string, approachData: Partial<Omit<Approach, "id" | "difficulty">>) => Approach | null;
362
370
  static deleteApproach: (code: string) => boolean;
363
371
  static getLearningObjectives: (subjectCode?: string) => LearningObjectiveMetadata[];
372
+ static saveLearningObjectives: (items: LearningObjectiveMetadata[]) => void;
364
373
  static addLearningObjective: (name: string, code: string, subjectCode?: string, description?: string) => LearningObjectiveMetadata;
365
374
  static updateLearningObjective: (id: string, name: string, code: string, subjectCode?: string, description?: string) => LearningObjectiveMetadata | null;
366
375
  static deleteLearningObjective: (code: string) => boolean;
package/dist/index.mjs CHANGED
@@ -2625,8 +2625,6 @@ var LocalStorageManager = class {
2625
2625
  this.saveAll([...items, newItem]);
2626
2626
  return newItem;
2627
2627
  }
2628
- // ===== FIX IS HERE =====
2629
- // Changed the type of 'updates' to allow 'code' to be part of the update object.
2630
2628
  update(id, updates) {
2631
2629
  const items = this.getAll();
2632
2630
  const index = items.findIndex((i) => i.id === id);
@@ -2639,7 +2637,6 @@ var LocalStorageManager = class {
2639
2637
  this.saveAll(items);
2640
2638
  return updatedItem;
2641
2639
  }
2642
- // =======================
2643
2640
  delete(code) {
2644
2641
  const items = this.getAll();
2645
2642
  const newItems = items.filter((i) => i.code !== code);
@@ -2673,81 +2670,84 @@ function mapRawDifficultyToStandard(rawDifficulty) {
2673
2670
  return "medium";
2674
2671
  }
2675
2672
  }
2676
- var _MetadataService = class _MetadataService {
2673
+ var MetadataService = class {
2677
2674
  };
2678
2675
  // --- Subject Services ---
2679
- _MetadataService.getSubjects = () => subjectManager.getAll().sort((a, b) => a.name.localeCompare(b.name));
2680
- _MetadataService.addSubject = (name, code) => {
2681
- return subjectManager.add({ code, name, createdAt: (/* @__PURE__ */ new Date()).toISOString(), updatedAt: (/* @__PURE__ */ new Date()).toISOString() });
2682
- };
2683
- _MetadataService.updateSubject = (id, name, code) => {
2684
- return subjectManager.update(id, { name, code, updatedAt: (/* @__PURE__ */ new Date()).toISOString() });
2685
- };
2686
- _MetadataService.deleteSubject = (code) => {
2687
- const topics = _MetadataService.getTopics(code);
2688
- if (topics.length > 0) {
2676
+ MetadataService.getSubjects = () => subjectManager.getAll().sort((a, b) => a.name.localeCompare(b.name));
2677
+ MetadataService.saveSubjects = (items) => subjectManager.saveAll(items);
2678
+ MetadataService.addSubject = (name, code) => subjectManager.add({ code, name, createdAt: (/* @__PURE__ */ new Date()).toISOString(), updatedAt: (/* @__PURE__ */ new Date()).toISOString() });
2679
+ MetadataService.updateSubject = (id, name, code) => subjectManager.update(id, { name, code, updatedAt: (/* @__PURE__ */ new Date()).toISOString() });
2680
+ MetadataService.deleteSubject = (code) => {
2681
+ if (topicManager.getAll().some((t) => t.subjectCode === code)) {
2689
2682
  throw new Error("Cannot delete subject: It is referenced by topics.");
2690
2683
  }
2691
2684
  return subjectManager.delete(code);
2692
2685
  };
2693
2686
  // --- GradeLevel Services ---
2694
- _MetadataService.getGradeLevels = () => gradeLevelManager.getAll().sort((a, b) => a.name.localeCompare(b.name));
2695
- _MetadataService.addGradeLevel = (name, code) => gradeLevelManager.add({ name, code });
2696
- _MetadataService.updateGradeLevel = (id, name, code) => gradeLevelManager.update(id, { name, code });
2697
- _MetadataService.deleteGradeLevel = (code) => gradeLevelManager.delete(code);
2687
+ MetadataService.getGradeLevels = () => gradeLevelManager.getAll().sort((a, b) => a.name.localeCompare(b.name));
2688
+ MetadataService.saveGradeLevels = (items) => gradeLevelManager.saveAll(items);
2689
+ MetadataService.addGradeLevel = (name, code) => gradeLevelManager.add({ name, code });
2690
+ MetadataService.updateGradeLevel = (id, name, code) => gradeLevelManager.update(id, { name, code });
2691
+ MetadataService.deleteGradeLevel = (code) => gradeLevelManager.delete(code);
2698
2692
  // --- Topic Services ---
2699
- _MetadataService.getTopics = (subjectCode) => {
2693
+ MetadataService.getTopics = (subjectCode) => {
2700
2694
  const allTopics = topicManager.getAll();
2701
2695
  const filtered = subjectCode ? allTopics.filter((t) => t.subjectCode === subjectCode) : allTopics;
2702
2696
  return filtered.sort((a, b) => a.name.localeCompare(b.name));
2703
2697
  };
2704
- _MetadataService.addTopic = (name, code, subjectCode) => topicManager.add({ name, code, subjectCode });
2705
- _MetadataService.updateTopic = (id, name, code, subjectCode) => topicManager.update(id, { name, code, subjectCode });
2706
- _MetadataService.deleteTopic = (code) => topicManager.delete(code);
2698
+ MetadataService.saveTopics = (items) => topicManager.saveAll(items);
2699
+ MetadataService.addTopic = (name, code, subjectCode) => topicManager.add({ name, code, subjectCode });
2700
+ MetadataService.updateTopic = (id, name, code, subjectCode) => topicManager.update(id, { name, code, subjectCode });
2701
+ MetadataService.deleteTopic = (code) => topicManager.delete(code);
2707
2702
  // --- BloomLevel Services ---
2708
- _MetadataService.getBloomLevels = () => bloomLevelManager.getAll().sort((a, b) => a.name.localeCompare(b.name));
2709
- _MetadataService.addBloomLevel = (name, code, description) => bloomLevelManager.add({ name, code, description });
2710
- _MetadataService.updateBloomLevel = (id, name, code, description) => bloomLevelManager.update(id, { name, code, description });
2711
- _MetadataService.deleteBloomLevel = (code) => bloomLevelManager.delete(code);
2703
+ MetadataService.getBloomLevels = () => bloomLevelManager.getAll().sort((a, b) => a.name.localeCompare(b.name));
2704
+ MetadataService.saveBloomLevels = (items) => bloomLevelManager.saveAll(items);
2705
+ MetadataService.addBloomLevel = (name, code, description) => bloomLevelManager.add({ name, code, description });
2706
+ MetadataService.updateBloomLevel = (id, name, code, description) => bloomLevelManager.update(id, { name, code, description });
2707
+ MetadataService.deleteBloomLevel = (code) => bloomLevelManager.delete(code);
2712
2708
  // --- QuestionType Services ---
2713
- _MetadataService.getQuestionTypes = () => questionTypeManager.getAll().sort((a, b) => a.name.localeCompare(b.name));
2714
- _MetadataService.addQuestionType = (name, code, description) => questionTypeManager.add({ name, code, description });
2715
- _MetadataService.updateQuestionType = (id, name, code, description) => questionTypeManager.update(id, { name, code, description });
2716
- _MetadataService.deleteQuestionType = (code) => questionTypeManager.delete(code);
2709
+ MetadataService.getQuestionTypes = () => questionTypeManager.getAll().sort((a, b) => a.name.localeCompare(b.name));
2710
+ MetadataService.saveQuestionTypes = (items) => questionTypeManager.saveAll(items);
2711
+ MetadataService.addQuestionType = (name, code, description) => questionTypeManager.add({ name, code, description });
2712
+ MetadataService.updateQuestionType = (id, name, code, description) => questionTypeManager.update(id, { name, code, description });
2713
+ MetadataService.deleteQuestionType = (code) => questionTypeManager.delete(code);
2717
2714
  // --- Category Services ---
2718
- _MetadataService.getCategories = () => categoryManager.getAll().sort((a, b) => a.name.localeCompare(b.name));
2719
- _MetadataService.addCategory = (name, code, description) => categoryManager.add({ name, code, description });
2720
- _MetadataService.updateCategory = (id, name, code, description) => categoryManager.update(id, { name, code, description });
2721
- _MetadataService.deleteCategory = (code) => categoryManager.delete(code);
2715
+ MetadataService.getCategories = () => categoryManager.getAll().sort((a, b) => a.name.localeCompare(b.name));
2716
+ MetadataService.saveCategories = (items) => categoryManager.saveAll(items);
2717
+ MetadataService.addCategory = (name, code, description) => categoryManager.add({ name, code, description });
2718
+ MetadataService.updateCategory = (id, name, code, description) => categoryManager.update(id, { name, code, description });
2719
+ MetadataService.deleteCategory = (code) => categoryManager.delete(code);
2722
2720
  // --- Context Services ---
2723
- _MetadataService.getContexts = () => contextManager.getAll().sort((a, b) => a.name.localeCompare(b.name));
2724
- _MetadataService.addContext = (name, code, description) => contextManager.add({ name, code, description });
2725
- _MetadataService.updateContext = (id, name, code, description) => contextManager.update(id, { name, code, description });
2726
- _MetadataService.deleteContext = (code) => contextManager.delete(code);
2721
+ MetadataService.getContexts = () => contextManager.getAll().sort((a, b) => a.name.localeCompare(b.name));
2722
+ MetadataService.saveContexts = (items) => contextManager.saveAll(items);
2723
+ MetadataService.addContext = (name, code, description) => contextManager.add({ name, code, description });
2724
+ MetadataService.updateContext = (id, name, code, description) => contextManager.update(id, { name, code, description });
2725
+ MetadataService.deleteContext = (code) => contextManager.delete(code);
2727
2726
  // --- Approach Services ---
2728
- _MetadataService.getApproaches = () => approachManager.getAll().sort((a, b) => a.code.localeCompare(b.code));
2729
- _MetadataService.addApproach = (approachData) => {
2727
+ MetadataService.getApproaches = () => approachManager.getAll().sort((a, b) => a.code.localeCompare(b.code));
2728
+ MetadataService.saveApproaches = (items) => approachManager.saveAll(items);
2729
+ MetadataService.addApproach = (approachData) => {
2730
2730
  const difficulty = mapRawDifficultyToStandard(approachData.rawDifficulty);
2731
2731
  return approachManager.add({ ...approachData, difficulty });
2732
2732
  };
2733
- _MetadataService.updateApproach = (id, approachData) => {
2733
+ MetadataService.updateApproach = (id, approachData) => {
2734
2734
  const updates = { ...approachData };
2735
2735
  if (approachData.rawDifficulty) {
2736
2736
  updates.difficulty = mapRawDifficultyToStandard(approachData.rawDifficulty);
2737
2737
  }
2738
2738
  return approachManager.update(id, updates);
2739
2739
  };
2740
- _MetadataService.deleteApproach = (code) => approachManager.delete(code);
2740
+ MetadataService.deleteApproach = (code) => approachManager.delete(code);
2741
2741
  // --- LearningObjective Services ---
2742
- _MetadataService.getLearningObjectives = (subjectCode) => {
2742
+ MetadataService.getLearningObjectives = (subjectCode) => {
2743
2743
  const allLOs = learningObjectiveManager.getAll();
2744
2744
  const filtered = subjectCode ? allLOs.filter((lo) => lo.subjectCode === subjectCode) : allLOs;
2745
2745
  return filtered.sort((a, b) => a.name.localeCompare(b.name));
2746
2746
  };
2747
- _MetadataService.addLearningObjective = (name, code, subjectCode, description) => learningObjectiveManager.add({ name, code, subjectCode, description });
2748
- _MetadataService.updateLearningObjective = (id, name, code, subjectCode, description) => learningObjectiveManager.update(id, { name, code, subjectCode, description });
2749
- _MetadataService.deleteLearningObjective = (code) => learningObjectiveManager.delete(code);
2750
- var MetadataService = _MetadataService;
2747
+ MetadataService.saveLearningObjectives = (items) => learningObjectiveManager.saveAll(items);
2748
+ MetadataService.addLearningObjective = (name, code, subjectCode, description) => learningObjectiveManager.add({ name, code, subjectCode, description });
2749
+ MetadataService.updateLearningObjective = (id, name, code, subjectCode, description) => learningObjectiveManager.update(id, { name, code, subjectCode, description });
2750
+ MetadataService.deleteLearningObjective = (code) => learningObjectiveManager.delete(code);
2751
2751
 
2752
2752
  // src/services/questionBankService.ts
2753
2753
  var LocalStorageManager2 = class {