@timeback/qti 0.1.4 → 0.1.5
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.d.ts
CHANGED
|
@@ -642,7 +642,26 @@ declare const QtiPaginationParams = z
|
|
|
642
642
|
// ASSESSMENT ITEMS (REQUEST INPUTS)
|
|
643
643
|
// ═══════════════════════════════════════════════════════════════════════════════
|
|
644
644
|
|
|
645
|
-
|
|
645
|
+
/**
|
|
646
|
+
* XML-format creation input.
|
|
647
|
+
*
|
|
648
|
+
* The preferred way to create assessment items — send raw QTI 3.0 XML and the
|
|
649
|
+
* server validates it against IMS QTI XSDs.
|
|
650
|
+
*/
|
|
651
|
+
declare const QtiAssessmentItemXmlCreateInput = z
|
|
652
|
+
.object({
|
|
653
|
+
format: z.string().pipe(z.literal('xml')),
|
|
654
|
+
xml: z.string().min(1),
|
|
655
|
+
metadata: QtiItemMetadata.optional(),
|
|
656
|
+
})
|
|
657
|
+
.strict()
|
|
658
|
+
|
|
659
|
+
/**
|
|
660
|
+
* JSON-format creation input (experimental on the server side).
|
|
661
|
+
*
|
|
662
|
+
* Sends a structured/parsed representation of a QTI item.
|
|
663
|
+
*/
|
|
664
|
+
declare const QtiAssessmentItemJsonCreateInput = z
|
|
646
665
|
.object({
|
|
647
666
|
identifier: z.string().min(1),
|
|
648
667
|
title: z.string().min(1),
|
|
@@ -660,6 +679,17 @@ declare const QtiAssessmentItemCreateInput = z
|
|
|
660
679
|
})
|
|
661
680
|
.strict()
|
|
662
681
|
|
|
682
|
+
/**
|
|
683
|
+
* Union of XML and JSON creation inputs for assessment items.
|
|
684
|
+
*
|
|
685
|
+
* Accepts either `{ format: 'xml', xml, metadata? }` or the structured JSON
|
|
686
|
+
* shape with `{ identifier, title, type, ... }`.
|
|
687
|
+
*/
|
|
688
|
+
declare const QtiAssessmentItemCreateInput = z.union([
|
|
689
|
+
QtiAssessmentItemXmlCreateInput,
|
|
690
|
+
QtiAssessmentItemJsonCreateInput,
|
|
691
|
+
])
|
|
692
|
+
|
|
663
693
|
declare const QtiAssessmentItemUpdateInput = z
|
|
664
694
|
.object({
|
|
665
695
|
identifier: z.string().min(1).optional(),
|
|
@@ -713,9 +743,9 @@ declare const QtiAssessmentSection = z
|
|
|
713
743
|
declare const QtiTestPart = z
|
|
714
744
|
.object({
|
|
715
745
|
identifier: z.string().min(1),
|
|
716
|
-
navigationMode: QtiNavigationMode,
|
|
717
|
-
submissionMode: QtiSubmissionMode,
|
|
718
|
-
'qti-assessment-section': z.
|
|
746
|
+
navigationMode: z.string().pipe(QtiNavigationMode),
|
|
747
|
+
submissionMode: z.string().pipe(QtiSubmissionMode),
|
|
748
|
+
'qti-assessment-section': z.array(QtiAssessmentSection),
|
|
719
749
|
})
|
|
720
750
|
.strict()
|
|
721
751
|
|
|
@@ -742,7 +772,7 @@ declare const QtiAssessmentTestCreateInput = z
|
|
|
742
772
|
maxAttempts: z.number().optional(),
|
|
743
773
|
toolsEnabled: z.record(z.string(), z.boolean()).optional(),
|
|
744
774
|
metadata: z.record(z.string(), z.unknown()).optional(),
|
|
745
|
-
'qti-test-part': QtiTestPart,
|
|
775
|
+
'qti-test-part': z.array(QtiTestPart),
|
|
746
776
|
'qti-outcome-declaration': z.array(QtiTestOutcomeDeclaration).optional(),
|
|
747
777
|
})
|
|
748
778
|
.strict()
|
|
@@ -758,7 +788,7 @@ declare const QtiAssessmentTestUpdateInput = z
|
|
|
758
788
|
maxAttempts: z.number().optional(),
|
|
759
789
|
toolsEnabled: z.record(z.string(), z.boolean()).optional(),
|
|
760
790
|
metadata: z.record(z.string(), z.unknown()).optional(),
|
|
761
|
-
'qti-test-part': QtiTestPart,
|
|
791
|
+
'qti-test-part': z.array(QtiTestPart),
|
|
762
792
|
'qti-outcome-declaration': z.array(QtiTestOutcomeDeclaration).optional(),
|
|
763
793
|
})
|
|
764
794
|
.strict()
|
|
@@ -847,6 +877,8 @@ type UpdateSectionRequest = input<typeof QtiAssessmentSection>
|
|
|
847
877
|
type AddItemRequest = input<typeof QtiAssessmentItemRef>
|
|
848
878
|
type ReorderItemsRequest = input<typeof QtiReorderItemsInput>
|
|
849
879
|
|
|
880
|
+
type CreateAssessmentItemXmlRequest = input<typeof QtiAssessmentItemXmlCreateInput>
|
|
881
|
+
type CreateAssessmentItemJsonRequest = input<typeof QtiAssessmentItemJsonCreateInput>
|
|
850
882
|
type CreateAssessmentItemRequest = input<typeof QtiAssessmentItemCreateInput>
|
|
851
883
|
type UpdateAssessmentItemRequest = input<typeof QtiAssessmentItemUpdateInput>
|
|
852
884
|
type ProcessResponseRequest = input<typeof QtiAssessmentItemProcessResponseInput>
|
|
@@ -933,6 +965,25 @@ declare class AssessmentItemsResource {
|
|
|
933
965
|
* @returns Score and feedback
|
|
934
966
|
*/
|
|
935
967
|
processResponse(identifier: string, body: Omit<ProcessResponseRequest, 'identifier'>): Promise<ProcessResponseResult>;
|
|
968
|
+
/**
|
|
969
|
+
* Create an assessment item from raw QTI 3.0 XML.
|
|
970
|
+
*
|
|
971
|
+
* This is the preferred creation method — the server validates the XML
|
|
972
|
+
* against IMS QTI XSDs. Optionally include metadata (subject, grade, etc.).
|
|
973
|
+
*
|
|
974
|
+
* @param body - XML string and optional metadata
|
|
975
|
+
* @returns The created assessment item
|
|
976
|
+
*
|
|
977
|
+
* @example
|
|
978
|
+
* ```typescript
|
|
979
|
+
* const item = await client.assessmentItems.createFromXml({
|
|
980
|
+
* format: 'xml',
|
|
981
|
+
* xml: '<qti-assessment-item ...>...</qti-assessment-item>',
|
|
982
|
+
* metadata: { subject: 'Math', difficulty: 'easy' },
|
|
983
|
+
* })
|
|
984
|
+
* ```
|
|
985
|
+
*/
|
|
986
|
+
createFromXml(body: CreateAssessmentItemXmlRequest): Promise<AssessmentItem>;
|
|
936
987
|
/**
|
|
937
988
|
* Create an assessment item from metadata.
|
|
938
989
|
*
|
|
@@ -941,7 +992,7 @@ declare class AssessmentItemsResource {
|
|
|
941
992
|
* @param body - Assessment item metadata
|
|
942
993
|
* @returns The created assessment item
|
|
943
994
|
*/
|
|
944
|
-
createFromMetadata(body:
|
|
995
|
+
createFromMetadata(body: CreateAssessmentItemJsonRequest): Promise<AssessmentItem>;
|
|
945
996
|
}
|
|
946
997
|
|
|
947
998
|
/**
|
package/dist/index.js
CHANGED
|
@@ -16667,7 +16667,7 @@ var QtiItemMetadata = exports_external.object({
|
|
|
16667
16667
|
grade: TimebackGrade.optional(),
|
|
16668
16668
|
difficulty: QtiDifficulty.optional(),
|
|
16669
16669
|
learningObjectiveSet: exports_external.array(QtiLearningObjectiveSet).optional()
|
|
16670
|
-
}).
|
|
16670
|
+
}).loose();
|
|
16671
16671
|
var QtiModalFeedback = exports_external.object({
|
|
16672
16672
|
outcomeIdentifier: exports_external.string().min(1),
|
|
16673
16673
|
identifier: exports_external.string().min(1),
|
|
@@ -16704,7 +16704,12 @@ var QtiPaginationParams = exports_external.object({
|
|
|
16704
16704
|
sort: exports_external.string().optional(),
|
|
16705
16705
|
order: exports_external.enum(["asc", "desc"]).optional()
|
|
16706
16706
|
}).strict();
|
|
16707
|
-
var
|
|
16707
|
+
var QtiAssessmentItemXmlCreateInput = exports_external.object({
|
|
16708
|
+
format: exports_external.string().pipe(exports_external.literal("xml")),
|
|
16709
|
+
xml: exports_external.string().min(1),
|
|
16710
|
+
metadata: QtiItemMetadata.optional()
|
|
16711
|
+
}).strict();
|
|
16712
|
+
var QtiAssessmentItemJsonCreateInput = exports_external.object({
|
|
16708
16713
|
identifier: exports_external.string().min(1),
|
|
16709
16714
|
title: exports_external.string().min(1),
|
|
16710
16715
|
type: QtiAssessmentItemType,
|
|
@@ -16719,6 +16724,10 @@ var QtiAssessmentItemCreateInput = exports_external.object({
|
|
|
16719
16724
|
feedbackInline: exports_external.array(QtiFeedbackInline).optional(),
|
|
16720
16725
|
feedbackBlock: exports_external.array(QtiFeedbackBlock).optional()
|
|
16721
16726
|
}).strict();
|
|
16727
|
+
var QtiAssessmentItemCreateInput = exports_external.union([
|
|
16728
|
+
QtiAssessmentItemXmlCreateInput,
|
|
16729
|
+
QtiAssessmentItemJsonCreateInput
|
|
16730
|
+
]);
|
|
16722
16731
|
var QtiAssessmentItemUpdateInput = exports_external.object({
|
|
16723
16732
|
identifier: exports_external.string().min(1).optional(),
|
|
16724
16733
|
title: exports_external.string().min(1),
|
|
@@ -16755,9 +16764,9 @@ var QtiAssessmentSection = exports_external.object({
|
|
|
16755
16764
|
}).strict();
|
|
16756
16765
|
var QtiTestPart = exports_external.object({
|
|
16757
16766
|
identifier: exports_external.string().min(1),
|
|
16758
|
-
navigationMode: QtiNavigationMode,
|
|
16759
|
-
submissionMode: QtiSubmissionMode,
|
|
16760
|
-
"qti-assessment-section": exports_external.
|
|
16767
|
+
navigationMode: exports_external.string().pipe(QtiNavigationMode),
|
|
16768
|
+
submissionMode: exports_external.string().pipe(QtiSubmissionMode),
|
|
16769
|
+
"qti-assessment-section": exports_external.array(QtiAssessmentSection)
|
|
16761
16770
|
}).strict();
|
|
16762
16771
|
var QtiReorderItemsInput = exports_external.object({
|
|
16763
16772
|
items: exports_external.array(QtiAssessmentItemRef).min(1)
|
|
@@ -16775,7 +16784,7 @@ var QtiAssessmentTestCreateInput = exports_external.object({
|
|
|
16775
16784
|
maxAttempts: exports_external.number().optional(),
|
|
16776
16785
|
toolsEnabled: exports_external.record(exports_external.string(), exports_external.boolean()).optional(),
|
|
16777
16786
|
metadata: exports_external.record(exports_external.string(), exports_external.unknown()).optional(),
|
|
16778
|
-
"qti-test-part": QtiTestPart,
|
|
16787
|
+
"qti-test-part": exports_external.array(QtiTestPart),
|
|
16779
16788
|
"qti-outcome-declaration": exports_external.array(QtiTestOutcomeDeclaration).optional()
|
|
16780
16789
|
}).strict();
|
|
16781
16790
|
var QtiAssessmentTestUpdateInput = exports_external.object({
|
|
@@ -16788,7 +16797,7 @@ var QtiAssessmentTestUpdateInput = exports_external.object({
|
|
|
16788
16797
|
maxAttempts: exports_external.number().optional(),
|
|
16789
16798
|
toolsEnabled: exports_external.record(exports_external.string(), exports_external.boolean()).optional(),
|
|
16790
16799
|
metadata: exports_external.record(exports_external.string(), exports_external.unknown()).optional(),
|
|
16791
|
-
"qti-test-part": QtiTestPart,
|
|
16800
|
+
"qti-test-part": exports_external.array(QtiTestPart),
|
|
16792
16801
|
"qti-outcome-declaration": exports_external.array(QtiTestOutcomeDeclaration).optional()
|
|
16793
16802
|
}).strict();
|
|
16794
16803
|
var QtiStimulusCreateInput = exports_external.object({
|
|
@@ -16921,8 +16930,15 @@ class AssessmentItemsResource {
|
|
|
16921
16930
|
body: { identifier, ...body }
|
|
16922
16931
|
});
|
|
16923
16932
|
}
|
|
16933
|
+
createFromXml(body) {
|
|
16934
|
+
validateWithSchema(QtiAssessmentItemXmlCreateInput, body, "assessment item XML");
|
|
16935
|
+
return this.transport.request("/assessment-items", {
|
|
16936
|
+
method: "POST",
|
|
16937
|
+
body
|
|
16938
|
+
});
|
|
16939
|
+
}
|
|
16924
16940
|
createFromMetadata(body) {
|
|
16925
|
-
validateWithSchema(
|
|
16941
|
+
validateWithSchema(QtiAssessmentItemJsonCreateInput, body, "assessment item metadata");
|
|
16926
16942
|
return this.transport.request("/assessment-items/metadata", {
|
|
16927
16943
|
method: "POST",
|
|
16928
16944
|
body
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { Paginator } from '../lib';
|
|
7
7
|
import type { ListParams } from '@timeback/internal-client-infra';
|
|
8
|
-
import type { CreateAssessmentItemRequest, ListAssessmentItemsParams, ProcessResponseRequest, UpdateAssessmentItemRequest } from '@timeback/types/zod';
|
|
8
|
+
import type { CreateAssessmentItemJsonRequest, CreateAssessmentItemRequest, CreateAssessmentItemXmlRequest, ListAssessmentItemsParams, ProcessResponseRequest, UpdateAssessmentItemRequest } from '@timeback/types/zod';
|
|
9
9
|
import type { Transport } from '../lib/transport';
|
|
10
10
|
import type { AssessmentItem, DeleteResponse, ListResponse, ProcessResponseResult } from '../types';
|
|
11
11
|
/**
|
|
@@ -75,6 +75,25 @@ export declare class AssessmentItemsResource {
|
|
|
75
75
|
* @returns Score and feedback
|
|
76
76
|
*/
|
|
77
77
|
processResponse(identifier: string, body: Omit<ProcessResponseRequest, 'identifier'>): Promise<ProcessResponseResult>;
|
|
78
|
+
/**
|
|
79
|
+
* Create an assessment item from raw QTI 3.0 XML.
|
|
80
|
+
*
|
|
81
|
+
* This is the preferred creation method — the server validates the XML
|
|
82
|
+
* against IMS QTI XSDs. Optionally include metadata (subject, grade, etc.).
|
|
83
|
+
*
|
|
84
|
+
* @param body - XML string and optional metadata
|
|
85
|
+
* @returns The created assessment item
|
|
86
|
+
*
|
|
87
|
+
* @example
|
|
88
|
+
* ```typescript
|
|
89
|
+
* const item = await client.assessmentItems.createFromXml({
|
|
90
|
+
* format: 'xml',
|
|
91
|
+
* xml: '<qti-assessment-item ...>...</qti-assessment-item>',
|
|
92
|
+
* metadata: { subject: 'Math', difficulty: 'easy' },
|
|
93
|
+
* })
|
|
94
|
+
* ```
|
|
95
|
+
*/
|
|
96
|
+
createFromXml(body: CreateAssessmentItemXmlRequest): Promise<AssessmentItem>;
|
|
78
97
|
/**
|
|
79
98
|
* Create an assessment item from metadata.
|
|
80
99
|
*
|
|
@@ -83,6 +102,6 @@ export declare class AssessmentItemsResource {
|
|
|
83
102
|
* @param body - Assessment item metadata
|
|
84
103
|
* @returns The created assessment item
|
|
85
104
|
*/
|
|
86
|
-
createFromMetadata(body:
|
|
105
|
+
createFromMetadata(body: CreateAssessmentItemJsonRequest): Promise<AssessmentItem>;
|
|
87
106
|
}
|
|
88
107
|
//# sourceMappingURL=assessment-items.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assessment-items.d.ts","sourceRoot":"","sources":["../../src/resources/assessment-items.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"assessment-items.d.ts","sourceRoot":"","sources":["../../src/resources/assessment-items.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAeH,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAElC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAA;AACjE,OAAO,KAAK,EACX,+BAA+B,EAC/B,2BAA2B,EAC3B,8BAA8B,EAC9B,yBAAyB,EACzB,sBAAsB,EACtB,2BAA2B,EAC3B,MAAM,qBAAqB,CAAA;AAC5B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAA;AAEnG;;;;;GAKG;AACH,qBAAa,uBAAuB;IACvB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAAtC,YAA6B,SAAS,EAAE,SAAS,EAAI;IAErD;;;;;OAKG;IACH,IAAI,CAAC,MAAM,GAAE,yBAA8B,GAAG,OAAO,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC,CAYlF;IAED;;;;;;;;OAQG;IACH,MAAM,CAAC,MAAM,GAAE,UAAU,GAAG;QAAE,GAAG,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,SAAS,CAAC,cAAc,CAAC,CAG5E;IAED;;;;;OAKG;IACH,GAAG,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAK/C;IAED;;;;;OAKG;IACH,MAAM,CAAC,IAAI,EAAE,2BAA2B,GAAG,OAAO,CAAC,cAAc,CAAC,CAMjE;IAED;;;;;;OAMG;IACH,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,2BAA2B,GAAG,OAAO,CAAC,cAAc,CAAC,CAUrF;IAED;;;;;OAKG;IACH,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAQlD;IAED;;;;;;;;OAQG;IACH,eAAe,CACd,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,IAAI,CAAC,sBAAsB,EAAE,YAAY,CAAC,GAC9C,OAAO,CAAC,qBAAqB,CAAC,CAUhC;IAED;;;;;;;;;;;;;;;;;OAiBG;IACH,aAAa,CAAC,IAAI,EAAE,8BAA8B,GAAG,OAAO,CAAC,cAAc,CAAC,CAM3E;IAED;;;;;;;OAOG;IACH,kBAAkB,CAAC,IAAI,EAAE,+BAA+B,GAAG,OAAO,CAAC,cAAc,CAAC,CAMjF;CACD"}
|