scorm-client
Version:
307 lines (306 loc) • 7.64 kB
TypeScript
export type ReadWriteScormCmiElementTypeMap = [
{
element: `cmi.comments_from_learner.${number}.comment`;
value: string;
},
{
element: `cmi.comments_from_learner.${number}.location`;
value: string;
},
{
element: `cmi.comments_from_learner.${number}.timestamp`;
value: unknown;
},
{
element: `cmi.completion_status`;
value: 'completed' | 'incomplete' | 'not attempted' | 'unknown';
},
{
element: `cmi.interactions.${number}.id`;
value: string;
},
{
element: `cmi.interactions.${number}.objectives.${number}.id`;
value: string;
},
{
element: `cmi.interactions.${number}.timestamp`;
value: unknown;
},
{
element: `cmi.interactions.${number}.correct_responses.${number}.pattern`;
value: unknown;
},
{
element: `cmi.interactions.${number}.weighting`;
value: Float;
},
{
element: `cmi.interactions.${number}.learner_response`;
value: unknown;
},
{
element: `cmi.interactions.${number}.latency`;
value: unknown;
},
{
element: `cmi.interactions.${number}.description`;
value: string;
},
{
element: `cmi.learner_preference.audio_level`;
value: Float;
},
{
element: `cmi.learner_preference.language`;
value: string;
},
{
element: `cmi.learner_preference.delivery_speed`;
value: Float;
},
{
element: `cmi.learner_preference.audio_captioning`;
value: '-1' | '0' | '1';
},
{
element: `cmi.location`;
value: string;
},
{
element: `cmi.objectives.${number}.id`;
value: string;
},
{
element: `cmi.objectives.${number}.score.scaled`;
value: Float;
},
{
element: `cmi.objectives.${number}.score.raw`;
value: Float;
},
{
element: `cmi.objectives.${number}.score.min`;
value: Float;
},
{
element: `cmi.objectives.${number}.score.max`;
value: Float;
},
{
element: `cmi.objectives.${number}.success_status`;
value: 'passed' | 'failed' | 'unknown';
},
{
element: `cmi.objectives.${number}.completion_status`;
value: 'completed' | 'incomplete' | 'not attempted' | 'unknown';
},
{
element: `cmi.objectives.${number}.progress_measure`;
value: Float;
},
{
element: `cmi.objectives.${number}.description`;
value: string;
},
{
element: `cmi.progress_measure`;
value: Float;
},
{
element: `cmi.score.scaled`;
value: Float;
},
{
element: `cmi.score.raw`;
value: Float;
},
{
element: `cmi.score.min`;
value: Float;
},
{
element: `cmi.score.max`;
value: Float;
},
{
element: `cmi.success_status`;
value: 'passed' | 'failed' | 'unknown';
},
{
element: `cmi.suspend_data`;
value: string;
},
{
element: `adl.nav.request`;
value: unknown;
},
{
element: `cmi.interactions.${number}.type`;
value: 'true-false' | 'choice' | 'fill-in' | 'long-fill-in' | 'matching' | 'performance' | 'sequencing' | 'likert' | 'numeric' | 'other';
},
{
element: `cmi.interactions.${number}.result`;
value: 'correct' | 'incorrect' | 'unanticipated' | 'neutral';
}
];
export type ReadScormCmiElementTypeMap = ReadWriteScormCmiElementTypeMap | [
{
element: `cmi._version`;
value: string;
},
{
element: `cmi.comments_from_learner._children`;
value: unknown;
},
{
element: `cmi.comments_from_learner._count`;
value: PositiveInteger;
},
{
element: `cmi.comments_from_lms._children`;
value: unknown;
},
{
element: `cmi.comments_from_lms._count`;
value: PositiveInteger;
},
{
element: `cmi.comments_from_lms.${number}.comment`;
value: string;
},
{
element: `cmi.comments_from_lms.${number}.location`;
value: string;
},
{
element: `cmi.comments_from_lms.${number}.timestamp`;
value: unknown;
},
{
element: `cmi.completion_threshold`;
value: Float;
},
{
element: `cmi.credit`;
value: 'credit' | 'no-credit';
},
{
element: `cmi.entry`;
value: unknown;
},
{
element: `cmi.interactions._children`;
value: unknown;
},
{
element: `cmi.interactions._count`;
value: PositiveInteger;
},
{
element: `cmi.interactions.${number}.objectives._count`;
value: PositiveInteger;
},
{
element: `cmi.interactions.${number}.correct_responses._count`;
value: PositiveInteger;
},
{
element: `cmi.launch_data`;
value: string;
},
{
element: `cmi.learner_id`;
value: string;
},
{
element: `cmi.learner_name`;
value: string;
},
{
element: `cmi.learner_preference._children`;
value: unknown;
},
{
element: `cmi.max_time_allowed`;
value: unknown;
},
{
element: `cmi.mode`;
value: 'browse' | 'normal' | 'review';
},
{
element: `cmi.objectives._children`;
value: unknown;
},
{
element: `cmi.objectives._count`;
value: PositiveInteger;
},
{
element: `cmi.objectives.${number}.score._children`;
value: unknown;
},
{
element: `cmi.scaled_passing_score`;
value: Float;
},
{
element: `cmi.score._children`;
value: unknown;
},
{
element: `cmi.time_limit_action`;
value: 'exit,message' | 'continue|message' | 'exit|no message' | 'continue,no message';
},
{
element: `cmi.total_time`;
value: unknown;
},
{
element: `adl.nav.request_valid.continue`;
value: boolean | unknown;
},
{
element: `adl.nav.request_valid.previous`;
value: boolean | unknown;
},
{
element: `adl.nav.request_valid.choice.{target=}`;
value: boolean | unknown;
},
{
element: `adl.nav.request_valid.jump.{target=}`;
value: boolean | unknown;
}
];
export type WriteScormCmiElementTypeMap = ReadWriteScormCmiElementTypeMap | [
{
element: `cmi.session_time`;
value: unknown;
},
{
element: `cmi.exit`;
value: unknown;
}
];
export type CmiReadKeyValuePair = ReadScormCmiElementTypeMap[number];
export type CmiReadKeyToValueMap = {
[P in CmiReadKeyValuePair as P['element']]: P['value'];
};
export type CmiWriteKeyValuePair = WriteScormCmiElementTypeMap[number];
export type CmiWriteKeyToValueMap = {
[P in CmiWriteKeyValuePair as P['element']]: P['value'];
};
export type PositiveInteger = number & {};
export type Float = number & {};
export type Scorm2004Api = {
Initialize: (param: string) => string | boolean;
Terminate: (param: string) => string | boolean;
GetValue: (element: string) => string;
SetValue: (element: string, value: unknown) => string | boolean;
Commit: (param: string) => string | boolean;
GetLastError: () => string | number;
GetErrorString: (errorCode: string | number) => string;
GetDiagnostic: (errorCode: string | number) => string;
};