@pie-element/math-inline 11.1.2-next.4 → 11.2.0-next.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/CHANGELOG.md +10 -0
- package/controller/CHANGELOG.md +10 -0
- package/controller/lib/index.js +60 -4
- package/controller/lib/index.js.map +1 -1
- package/controller/package.json +1 -1
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,16 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
# [11.2.0-next.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/math-inline@11.1.2-next.4...@pie-element/math-inline@11.2.0-next.0) (2026-03-18)
|
|
7
|
+
|
|
8
|
+
### Bug Fixes
|
|
9
|
+
|
|
10
|
+
- tests ([f46f1f9](https://github.com/pie-framework/pie-elements/commit/f46f1f9845ef96bbf7fefbc4f9ffafc48a19f5f6))
|
|
11
|
+
|
|
12
|
+
### Features
|
|
13
|
+
|
|
14
|
+
- **math-inline:** add scoring trace in outcome function PD-5467 ([1eeafce](https://github.com/pie-framework/pie-elements/commit/1eeafcecc12adb0e2d1f6415a0daf7178e3799c0))
|
|
15
|
+
|
|
6
16
|
## [11.1.2-next.4](https://github.com/pie-framework/pie-elements/compare/@pie-element/math-inline@11.1.2-next.3...@pie-element/math-inline@11.1.2-next.4) (2026-03-12)
|
|
7
17
|
|
|
8
18
|
### Bug Fixes
|
package/controller/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,16 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
# [9.2.0-next.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/math-inline-controller@9.1.1-next.1...@pie-element/math-inline-controller@9.2.0-next.0) (2026-03-18)
|
|
7
|
+
|
|
8
|
+
### Bug Fixes
|
|
9
|
+
|
|
10
|
+
- tests ([f46f1f9](https://github.com/pie-framework/pie-elements/commit/f46f1f9845ef96bbf7fefbc4f9ffafc48a19f5f6))
|
|
11
|
+
|
|
12
|
+
### Features
|
|
13
|
+
|
|
14
|
+
- **math-inline:** add scoring trace in outcome function PD-5467 ([1eeafce](https://github.com/pie-framework/pie-elements/commit/1eeafcecc12adb0e2d1f6415a0daf7178e3799c0))
|
|
15
|
+
|
|
6
16
|
## [9.1.1-next.1](https://github.com/pie-framework/pie-elements/compare/@pie-element/math-inline-controller@9.1.0-next.2...@pie-element/math-inline-controller@9.1.1-next.1) (2026-02-26)
|
|
7
17
|
|
|
8
18
|
**Note:** Version bump only for package @pie-element/math-inline-controller
|
package/controller/lib/index.js
CHANGED
|
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
});
|
|
7
7
|
exports.createCorrectResponseSession = void 0;
|
|
8
8
|
exports.createDefaultModel = createDefaultModel;
|
|
9
|
-
exports.validate = exports.outcome = exports.normalize = exports.model = void 0;
|
|
9
|
+
exports.validate = exports.outcome = exports.normalize = exports.model = exports.getLogTrace = void 0;
|
|
10
10
|
var _debug = _interopRequireDefault(require("debug"));
|
|
11
11
|
var _lodashEs = require("lodash-es");
|
|
12
12
|
var _feedback = require("@pie-lib/feedback");
|
|
@@ -86,23 +86,79 @@ function createDefaultModel(model = {}) {
|
|
|
86
86
|
});
|
|
87
87
|
});
|
|
88
88
|
}
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* Generates detailed trace log for math-inline scoring evaluation
|
|
92
|
+
* @param {Object} question
|
|
93
|
+
* @param {Object} session
|
|
94
|
+
* @param {Object} env
|
|
95
|
+
* @returns {Array<string>} traceLog
|
|
96
|
+
*/
|
|
97
|
+
const getLogTrace = (question, session, env) => {
|
|
98
|
+
const traceLog = [];
|
|
99
|
+
if (!session || !session.response && !session.completeAnswer) {
|
|
100
|
+
traceLog.push('Student did not enter a response.');
|
|
101
|
+
return traceLog;
|
|
102
|
+
}
|
|
103
|
+
const responseType = question?.responseType;
|
|
104
|
+
const isAdvanced = responseType === _utils.ResponseTypes.advanced;
|
|
105
|
+
const studentAnswer = isAdvanced ? session.completeAnswer : session.response;
|
|
106
|
+
const cleanStudentAnswer = studentAnswer ? studentAnswer.replace(/\\/g, '') : '';
|
|
107
|
+
if (!cleanStudentAnswer) {
|
|
108
|
+
traceLog.push('Student entered a response, but then it was removed.');
|
|
109
|
+
return traceLog;
|
|
110
|
+
}
|
|
111
|
+
traceLog.push(`Student entered response: ${cleanStudentAnswer}.`);
|
|
112
|
+
traceLog.push(`Response type: ${isAdvanced ? 'advanced' : 'simple'}.`);
|
|
113
|
+
const responses = question.responses || [];
|
|
114
|
+
const responsesToCheck = isAdvanced ? responses : responses.slice(0, 1);
|
|
115
|
+
responsesToCheck.forEach((response, index) => {
|
|
116
|
+
const validation = response.validation || question.validationDefault;
|
|
117
|
+
traceLog.push(`Response ${index + 1} validation mode: ${validation}.`);
|
|
118
|
+
if (validation === 'literal') {
|
|
119
|
+
const allowTrailingZeros = response.allowTrailingZeros || false;
|
|
120
|
+
const ignoreOrder = response.ignoreOrder || false;
|
|
121
|
+
traceLog.push(`Allow trailing zeros: ${allowTrailingZeros ? 'enabled' : 'disabled'}.`);
|
|
122
|
+
traceLog.push(`Ignore order: ${ignoreOrder ? 'enabled' : 'disabled'}.`);
|
|
123
|
+
}
|
|
124
|
+
const acceptedValues = [response.answer].concat(Object.keys(response.alternates || {}).map(alternateId => response.alternates[alternateId]));
|
|
125
|
+
if (acceptedValues.length > 1) {
|
|
126
|
+
traceLog.push(`Accepted answers: ${acceptedValues.length} (including alternates).`);
|
|
127
|
+
}
|
|
128
|
+
});
|
|
129
|
+
const correctness = getCorrectness(question, env, session, true);
|
|
130
|
+
if (correctness.correctness === 'correct') {
|
|
131
|
+
traceLog.push('Student answer matches one of the accepted responses.');
|
|
132
|
+
} else if (correctness.correctness === 'incorrect') {
|
|
133
|
+
traceLog.push('Student answer does not match any of the accepted responses.');
|
|
134
|
+
} else {
|
|
135
|
+
traceLog.push('Student answer could not be evaluated.');
|
|
136
|
+
}
|
|
137
|
+
traceLog.push(`Response evaluated as ${correctness.correctness}.`);
|
|
138
|
+
traceLog.push(`Final score: ${correctness.score}.`);
|
|
139
|
+
return traceLog;
|
|
140
|
+
};
|
|
141
|
+
exports.getLogTrace = getLogTrace;
|
|
89
142
|
const outcome = (question, session, env) => {
|
|
90
143
|
return new Promise(resolve => {
|
|
91
144
|
if (env.mode !== 'evaluate') {
|
|
92
145
|
resolve({
|
|
93
146
|
score: undefined,
|
|
94
|
-
completed: undefined
|
|
147
|
+
completed: undefined,
|
|
148
|
+
logTrace: []
|
|
95
149
|
});
|
|
96
150
|
} else {
|
|
97
151
|
if (!session || (0, _lodashEs.isEmpty)(session)) {
|
|
98
152
|
resolve({
|
|
99
153
|
score: 0,
|
|
100
|
-
empty: true
|
|
154
|
+
empty: true,
|
|
155
|
+
logTrace: ['Student did not enter a response.']
|
|
101
156
|
});
|
|
102
157
|
} else {
|
|
103
158
|
const correctness = getCorrectness(question, env, session, true);
|
|
104
159
|
resolve({
|
|
105
|
-
score: correctness.score
|
|
160
|
+
score: correctness.score,
|
|
161
|
+
logTrace: getLogTrace(question, session, env)
|
|
106
162
|
});
|
|
107
163
|
}
|
|
108
164
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["_debug","_interopRequireDefault","require","_lodashEs","_feedback","_utils","_translator","_defaults","mv","_interopRequireWildcard","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","translator","Translator","log","debug","getResponseCorrectness","model","answerItem","isOutcome","correctResponses","responses","isAdvanced","responseType","ResponseTypes","advanced","correctness","score","correct","isAnswerCorrect","getIsAnswerCorrect","slice","correctnessObject","correctResponseItems","answerCorrect","forEach","correctResponse","opts","mode","validation","defaults","validationDefault","literal","allowTrailingZeros","ignoreOrder","acceptedValues","answer","concat","keys","alternates","map","alternateId","length","latexEqual","getCorrectness","question","env","session","completeAnswer","response","undefined","createDefaultModel","Promise","resolve","config","outcome","completed","isEmpty","empty","exports","normalize","allowTrailingZerosDefault","ignoreOrderDefault","normalizedQuestion","extraCSSRules","language","simple","feedback","feedbackEnabled","getActualFeedbackForCorrectness","out","disabled","view","note","lng","showNote","some","role","rationale","rationaleEnabled","teacherInstructions","teacherInstructionsEnabled","prompt","promptEnabled","escape","string","replace","simpleSessionResponse","id","removeTrailingEscape","str","endsWith","advancedSessionResponse","answers","expression","RESPONSE_TOKEN","split","to","tt","join","m","match","RegExp","count","console","shift","value","trim","error","toString","createCorrectResponseSession","toLowerCase","getInnerText","html","replaceAll","getContent","validate","maxResponseAreas","responsesErrors","errors","field","required","index","reversedAlternates","entries","reverse","alternatesErrors","responseError","key","identicalAnswer","val","nbOfResponseAreas","responseAreasError"],"sources":["../src/index.js"],"sourcesContent":["import debug from 'debug';\nimport { isEmpty } from 'lodash-es';\nimport { getActualFeedbackForCorrectness } from '@pie-lib/feedback';\n\nimport { ResponseTypes } from './utils';\nimport Translator from '@pie-lib/translator';\n\nconst { translator } = Translator;\nimport defaults from './defaults';\n\nimport * as mv from '@pie-framework/math-validation';\n\nconst log = debug('@pie-element:math-inline:controller');\n\nconst getResponseCorrectness = (model, answerItem, isOutcome) => {\n const correctResponses = model.responses;\n const isAdvanced = model.responseType === ResponseTypes.advanced;\n\n if (!answerItem) {\n return {\n correctness: 'unanswered',\n score: isOutcome ? 0 : '0%',\n correct: false,\n };\n }\n\n const isAnswerCorrect = getIsAnswerCorrect(isAdvanced ? correctResponses : correctResponses.slice(0, 1), answerItem);\n\n const correctnessObject = {\n correctness: 'incorrect',\n score: isOutcome ? 0 : '0%',\n correct: false,\n };\n\n if (isAnswerCorrect) {\n correctnessObject.correctness = 'correct';\n correctnessObject.score = isOutcome ? 1 : '100%';\n correctnessObject.correct = true;\n }\n\n return correctnessObject;\n};\n\nfunction getIsAnswerCorrect(correctResponseItems, answerItem) {\n let answerCorrect = false;\n\n (correctResponseItems || []).forEach((correctResponse) => {\n if (answerCorrect) return;\n\n const opts = {\n mode: correctResponse.validation || defaults.validationDefault,\n };\n\n if (opts.mode === 'literal') {\n opts.literal = {\n allowTrailingZeros: correctResponse.allowTrailingZeros || false,\n ignoreOrder: correctResponse.ignoreOrder || false,\n };\n }\n\n const acceptedValues = [correctResponse.answer].concat(\n Object.keys(correctResponse.alternates || {}).map((alternateId) => correctResponse.alternates[alternateId]),\n );\n\n for (let i = 0; i < acceptedValues.length; i++) {\n try {\n if (mv.latexEqual(answerItem, acceptedValues[i], opts)) {\n answerCorrect = true;\n break;\n }\n } catch (e) {\n log('Parse failure when evaluating math', acceptedValues[i], answerItem, e);\n continue;\n }\n }\n });\n\n return answerCorrect;\n}\n\nconst getCorrectness = (question, env, session, isOutcome) => {\n if (env.mode === 'evaluate') {\n return getResponseCorrectness(\n question,\n question.responseType === ResponseTypes.advanced\n ? (session && session.completeAnswer) || ''\n : session && session.response,\n isOutcome,\n );\n }\n\n return undefined;\n};\n\nexport function createDefaultModel(model = {}) {\n return new Promise((resolve) => {\n resolve({\n config: {\n ...defaults,\n ...model,\n },\n });\n });\n}\n\nexport const outcome = (question, session, env) => {\n return new Promise((resolve) => {\n if (env.mode !== 'evaluate') {\n resolve({ score: undefined, completed: undefined });\n } else {\n if (!session || isEmpty(session)) {\n resolve({ score: 0, empty: true });\n } else {\n const correctness = getCorrectness(question, env, session, true);\n\n resolve({ score: correctness.score });\n }\n }\n });\n};\n\nexport const normalize = (question) => {\n // making sure that defaults are set\n if (!isEmpty(question.responses)) {\n question.responses = question.responses.map((correctResponse) => ({\n ...correctResponse,\n validation: correctResponse.validation || question.validationDefault,\n allowTrailingZeros: correctResponse.allowTrailingZeros || question.allowTrailingZerosDefault,\n ignoreOrder: correctResponse.ignoreOrder || question.ignoreOrderDefault,\n }));\n }\n\n return { ...defaults, ...question };\n};\n\nexport const model = (question, session, env) =>\n new Promise((resolve) => {\n const normalizedQuestion = normalize(question);\n const correctness = getCorrectness(normalizedQuestion, env, session);\n const { extraCSSRules, responses, language, ...config } = normalizedQuestion;\n\n config.responses = config.responseType === ResponseTypes.simple ? responses.slice(0, 1) : responses;\n\n const feedback =\n env.mode === 'evaluate' && normalizedQuestion.feedbackEnabled\n ? getActualFeedbackForCorrectness(correctness?.correctness, normalizedQuestion.feedback)\n : undefined;\n\n const out = {\n extraCSSRules,\n config,\n correctness,\n feedback,\n disabled: env.mode !== 'gather',\n view: env.mode === 'view',\n };\n\n const note = normalizedQuestion.note || translator.t('mathInline.primaryCorrectWithAlternates', { lng: language });\n const showNote =\n config?.responses?.length > 1 ||\n (config?.responses || []).some(\n (response) => response.validation === 'symbolic' || Object.keys(response.alternates || {}).length > 0,\n );\n\n if (env.mode === 'evaluate') {\n out.correctResponse = {};\n out.config.showNote = showNote;\n out.config.note = note;\n } else {\n out.config.responses = [];\n out.config.showNote = false;\n }\n\n if (env.role === 'instructor' && (env.mode === 'view' || env.mode === 'evaluate')) {\n out.rationale = normalizedQuestion.rationaleEnabled ? normalizedQuestion.rationale : null;\n out.teacherInstructions = normalizedQuestion.teacherInstructionsEnabled\n ? normalizedQuestion.teacherInstructions\n : null;\n } else {\n out.rationale = null;\n out.teacherInstructions = null;\n out.config.rationale = null;\n out.config.teacherInstructions = null;\n }\n\n out.config.env = env;\n out.config.prompt = normalizedQuestion.promptEnabled ? normalizedQuestion.prompt : null;\n out.language = language;\n\n log('out: ', out);\n resolve(out);\n });\n\nconst escape = (string) => string.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'); // $& means the whole matched string\n\nconst simpleSessionResponse = (question) =>\n new Promise((resolve) => {\n const { responses, id } = question;\n const { answer } = responses && responses.length ? responses[0] : {};\n\n resolve({\n id,\n response: answer || '',\n completeAnswer: answer || '',\n });\n });\n\n// use this for items like E672793\nconst removeTrailingEscape = (str) => (str.endsWith('\\\\') ? str.slice(0, -1) : str);\n\nconst advancedSessionResponse = (question) =>\n new Promise((resolve) => {\n const { responses, id } = question;\n const { answer } = responses && responses.length ? responses[0] : {};\n\n if (!answer) {\n resolve({\n id,\n answers: {},\n completeAnswer: '',\n });\n\n return;\n }\n\n try {\n const e = question.expression;\n const RESPONSE_TOKEN = /\\\\{\\\\{\\s*response\\s*\\\\}\\\\}/g;\n\n const o = escape(e).split(RESPONSE_TOKEN);\n const to = o.map((t) => (t === '' ? t : t.replace(/\\s+/g, () => '\\\\s*')));\n const tt = to.join('(.*)');\n\n const m = answer.match(new RegExp(tt));\n\n const count = o.length - 1;\n\n if (!m) {\n resolve({\n id,\n answers: {},\n completeAnswer: answer,\n });\n\n // eslint-disable-next-line no-console\n console.log(`can not find match: ${o} in ${answer}`);\n\n return;\n }\n\n m.shift();\n\n const answers = {};\n\n for (var i = 0; i < count; i++) {\n answers[`r${i + 1}`] = { value: removeTrailingEscape(m[i].trim()) };\n }\n\n resolve({\n id,\n answers,\n completeAnswer: answer,\n });\n } catch (e) {\n resolve({\n id,\n answers: {},\n completeAnswer: answer,\n });\n // eslint-disable-next-line no-console\n console.error(e.toString());\n }\n });\n\nexport const createCorrectResponseSession = (question, env) => {\n if (env.mode === 'evaluate' || env.role !== 'instructor') {\n // eslint-disable-next-line no-console\n console.error('can not create correct response session if mode is evaluate or role is not instructor');\n\n return Promise.resolve(null);\n }\n\n if ((question.responseType || '').toLowerCase() === 'simple') {\n return simpleSessionResponse(question, env);\n } else {\n return advancedSessionResponse(question, env);\n }\n};\n\n// remove all html tags\nconst getInnerText = (html) => (html || '').replaceAll(/<[^>]*>/g, '');\n\n// remove all html tags except img, iframe and source tag for audio\nconst getContent = (html) => (html || '').replace(/(<(?!img|iframe|source)([^>]+)>)/gi, '');\n\nexport const validate = (model = {}, config = {}) => {\n const { expression = '', responses, responseType } = model;\n const { maxResponseAreas } = config;\n const responsesErrors = {};\n const errors = {};\n\n ['teacherInstructions', 'prompt', 'rationale'].forEach((field) => {\n if (config[field]?.required && !getContent(model[field])) {\n errors[field] = 'This field is required.';\n }\n });\n\n (responses || []).forEach((response, index) => {\n const { answer } = response;\n const reversedAlternates = [...Object.entries(response.alternates || {})].reverse();\n const alternatesErrors = {};\n const responseError = {};\n\n if (answer === '') {\n responseError.answer = 'Content should not be empty.';\n }\n\n reversedAlternates.forEach(([key, value], index) => {\n if (value === '') {\n alternatesErrors[key] = 'Content should not be empty.';\n } else {\n const identicalAnswer =\n answer === value || reversedAlternates.slice(index + 1).some(([, val]) => val === value);\n\n if (identicalAnswer) {\n alternatesErrors[key] = 'Content should be unique.';\n }\n }\n });\n\n if (!isEmpty(responseError) || !isEmpty(alternatesErrors)) {\n responsesErrors[index] = { ...responseError, ...alternatesErrors };\n }\n });\n\n if (responseType === 'Advanced Multi') {\n const nbOfResponseAreas = (expression.match(/\\{\\{response\\}\\}/g) || []).length;\n\n if (nbOfResponseAreas > maxResponseAreas) {\n errors.responseAreasError = `No more than ${maxResponseAreas} response areas should be defined.`;\n } else if (nbOfResponseAreas < 1) {\n errors.responseAreasError = 'There should be at least 1 response area defined.';\n }\n }\n\n if (!isEmpty(responsesErrors)) {\n errors.responsesErrors = responsesErrors;\n }\n\n return errors;\n};\n"],"mappings":";;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,SAAA,GAAAD,OAAA;AACA,IAAAE,SAAA,GAAAF,OAAA;AAEA,IAAAG,MAAA,GAAAH,OAAA;AACA,IAAAI,WAAA,GAAAL,sBAAA,CAAAC,OAAA;AAGA,IAAAK,SAAA,GAAAN,sBAAA,CAAAC,OAAA;AAEA,IAAAM,EAAA,GAAAC,uBAAA,CAAAP,OAAA;AAAqD,SAAAO,wBAAAC,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAH,uBAAA,YAAAA,CAAAC,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAHrD,MAAM;EAAEkB;AAAW,CAAC,GAAGC,mBAAU;AAKjC,MAAMC,GAAG,GAAG,IAAAC,cAAK,EAAC,qCAAqC,CAAC;AAExD,MAAMC,sBAAsB,GAAGA,CAACC,KAAK,EAAEC,UAAU,EAAEC,SAAS,KAAK;EAC/D,MAAMC,gBAAgB,GAAGH,KAAK,CAACI,SAAS;EACxC,MAAMC,UAAU,GAAGL,KAAK,CAACM,YAAY,KAAKC,oBAAa,CAACC,QAAQ;EAEhE,IAAI,CAACP,UAAU,EAAE;IACf,OAAO;MACLQ,WAAW,EAAE,YAAY;MACzBC,KAAK,EAAER,SAAS,GAAG,CAAC,GAAG,IAAI;MAC3BS,OAAO,EAAE;IACX,CAAC;EACH;EAEA,MAAMC,eAAe,GAAGC,kBAAkB,CAACR,UAAU,GAAGF,gBAAgB,GAAGA,gBAAgB,CAACW,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAEb,UAAU,CAAC;EAEpH,MAAMc,iBAAiB,GAAG;IACxBN,WAAW,EAAE,WAAW;IACxBC,KAAK,EAAER,SAAS,GAAG,CAAC,GAAG,IAAI;IAC3BS,OAAO,EAAE;EACX,CAAC;EAED,IAAIC,eAAe,EAAE;IACnBG,iBAAiB,CAACN,WAAW,GAAG,SAAS;IACzCM,iBAAiB,CAACL,KAAK,GAAGR,SAAS,GAAG,CAAC,GAAG,MAAM;IAChDa,iBAAiB,CAACJ,OAAO,GAAG,IAAI;EAClC;EAEA,OAAOI,iBAAiB;AAC1B,CAAC;AAED,SAASF,kBAAkBA,CAACG,oBAAoB,EAAEf,UAAU,EAAE;EAC5D,IAAIgB,aAAa,GAAG,KAAK;EAEzB,CAACD,oBAAoB,IAAI,EAAE,EAAEE,OAAO,CAAEC,eAAe,IAAK;IACxD,IAAIF,aAAa,EAAE;IAEnB,MAAMG,IAAI,GAAG;MACXC,IAAI,EAAEF,eAAe,CAACG,UAAU,IAAIC,iBAAQ,CAACC;IAC/C,CAAC;IAED,IAAIJ,IAAI,CAACC,IAAI,KAAK,SAAS,EAAE;MAC3BD,IAAI,CAACK,OAAO,GAAG;QACbC,kBAAkB,EAAEP,eAAe,CAACO,kBAAkB,IAAI,KAAK;QAC/DC,WAAW,EAAER,eAAe,CAACQ,WAAW,IAAI;MAC9C,CAAC;IACH;IAEA,MAAMC,cAAc,GAAG,CAACT,eAAe,CAACU,MAAM,CAAC,CAACC,MAAM,CACpDtC,MAAM,CAACuC,IAAI,CAACZ,eAAe,CAACa,UAAU,IAAI,CAAC,CAAC,CAAC,CAACC,GAAG,CAAEC,WAAW,IAAKf,eAAe,CAACa,UAAU,CAACE,WAAW,CAAC,CAC5G,CAAC;IAED,KAAK,IAAInD,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG6C,cAAc,CAACO,MAAM,EAAEpD,CAAC,EAAE,EAAE;MAC9C,IAAI;QACF,IAAIT,EAAE,CAAC8D,UAAU,CAACnC,UAAU,EAAE2B,cAAc,CAAC7C,CAAC,CAAC,EAAEqC,IAAI,CAAC,EAAE;UACtDH,aAAa,GAAG,IAAI;UACpB;QACF;MACF,CAAC,CAAC,OAAOzC,CAAC,EAAE;QACVqB,GAAG,CAAC,oCAAoC,EAAE+B,cAAc,CAAC7C,CAAC,CAAC,EAAEkB,UAAU,EAAEzB,CAAC,CAAC;QAC3E;MACF;IACF;EACF,CAAC,CAAC;EAEF,OAAOyC,aAAa;AACtB;AAEA,MAAMoB,cAAc,GAAGA,CAACC,QAAQ,EAAEC,GAAG,EAAEC,OAAO,EAAEtC,SAAS,KAAK;EAC5D,IAAIqC,GAAG,CAAClB,IAAI,KAAK,UAAU,EAAE;IAC3B,OAAOtB,sBAAsB,CAC3BuC,QAAQ,EACRA,QAAQ,CAAChC,YAAY,KAAKC,oBAAa,CAACC,QAAQ,GAC3CgC,OAAO,IAAIA,OAAO,CAACC,cAAc,IAAK,EAAE,GACzCD,OAAO,IAAIA,OAAO,CAACE,QAAQ,EAC/BxC,SACF,CAAC;EACH;EAEA,OAAOyC,SAAS;AAClB,CAAC;AAEM,SAASC,kBAAkBA,CAAC5C,KAAK,GAAG,CAAC,CAAC,EAAE;EAC7C,OAAO,IAAI6C,OAAO,CAAEC,OAAO,IAAK;IAC9BA,OAAO,CAAC;MACNC,MAAM,EAAE;QACN,GAAGxB,iBAAQ;QACX,GAAGvB;MACL;IACF,CAAC,CAAC;EACJ,CAAC,CAAC;AACJ;AAEO,MAAMgD,OAAO,GAAGA,CAACV,QAAQ,EAAEE,OAAO,EAAED,GAAG,KAAK;EACjD,OAAO,IAAIM,OAAO,CAAEC,OAAO,IAAK;IAC9B,IAAIP,GAAG,CAAClB,IAAI,KAAK,UAAU,EAAE;MAC3ByB,OAAO,CAAC;QAAEpC,KAAK,EAAEiC,SAAS;QAAEM,SAAS,EAAEN;MAAU,CAAC,CAAC;IACrD,CAAC,MAAM;MACL,IAAI,CAACH,OAAO,IAAI,IAAAU,iBAAO,EAACV,OAAO,CAAC,EAAE;QAChCM,OAAO,CAAC;UAAEpC,KAAK,EAAE,CAAC;UAAEyC,KAAK,EAAE;QAAK,CAAC,CAAC;MACpC,CAAC,MAAM;QACL,MAAM1C,WAAW,GAAG4B,cAAc,CAACC,QAAQ,EAAEC,GAAG,EAAEC,OAAO,EAAE,IAAI,CAAC;QAEhEM,OAAO,CAAC;UAAEpC,KAAK,EAAED,WAAW,CAACC;QAAM,CAAC,CAAC;MACvC;IACF;EACF,CAAC,CAAC;AACJ,CAAC;AAAC0C,OAAA,CAAAJ,OAAA,GAAAA,OAAA;AAEK,MAAMK,SAAS,GAAIf,QAAQ,IAAK;EACrC;EACA,IAAI,CAAC,IAAAY,iBAAO,EAACZ,QAAQ,CAAClC,SAAS,CAAC,EAAE;IAChCkC,QAAQ,CAAClC,SAAS,GAAGkC,QAAQ,CAAClC,SAAS,CAAC6B,GAAG,CAAEd,eAAe,KAAM;MAChE,GAAGA,eAAe;MAClBG,UAAU,EAAEH,eAAe,CAACG,UAAU,IAAIgB,QAAQ,CAACd,iBAAiB;MACpEE,kBAAkB,EAAEP,eAAe,CAACO,kBAAkB,IAAIY,QAAQ,CAACgB,yBAAyB;MAC5F3B,WAAW,EAAER,eAAe,CAACQ,WAAW,IAAIW,QAAQ,CAACiB;IACvD,CAAC,CAAC,CAAC;EACL;EAEA,OAAO;IAAE,GAAGhC,iBAAQ;IAAE,GAAGe;EAAS,CAAC;AACrC,CAAC;AAACc,OAAA,CAAAC,SAAA,GAAAA,SAAA;AAEK,MAAMrD,KAAK,GAAGA,CAACsC,QAAQ,EAAEE,OAAO,EAAED,GAAG,KAC1C,IAAIM,OAAO,CAAEC,OAAO,IAAK;EACvB,MAAMU,kBAAkB,GAAGH,SAAS,CAACf,QAAQ,CAAC;EAC9C,MAAM7B,WAAW,GAAG4B,cAAc,CAACmB,kBAAkB,EAAEjB,GAAG,EAAEC,OAAO,CAAC;EACpE,MAAM;IAAEiB,aAAa;IAAErD,SAAS;IAAEsD,QAAQ;IAAE,GAAGX;EAAO,CAAC,GAAGS,kBAAkB;EAE5ET,MAAM,CAAC3C,SAAS,GAAG2C,MAAM,CAACzC,YAAY,KAAKC,oBAAa,CAACoD,MAAM,GAAGvD,SAAS,CAACU,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAGV,SAAS;EAEnG,MAAMwD,QAAQ,GACZrB,GAAG,CAAClB,IAAI,KAAK,UAAU,IAAImC,kBAAkB,CAACK,eAAe,GACzD,IAAAC,yCAA+B,EAACrD,WAAW,EAAEA,WAAW,EAAE+C,kBAAkB,CAACI,QAAQ,CAAC,GACtFjB,SAAS;EAEf,MAAMoB,GAAG,GAAG;IACVN,aAAa;IACbV,MAAM;IACNtC,WAAW;IACXmD,QAAQ;IACRI,QAAQ,EAAEzB,GAAG,CAAClB,IAAI,KAAK,QAAQ;IAC/B4C,IAAI,EAAE1B,GAAG,CAAClB,IAAI,KAAK;EACrB,CAAC;EAED,MAAM6C,IAAI,GAAGV,kBAAkB,CAACU,IAAI,IAAIvE,UAAU,CAAClB,CAAC,CAAC,yCAAyC,EAAE;IAAE0F,GAAG,EAAET;EAAS,CAAC,CAAC;EAClH,MAAMU,QAAQ,GACZrB,MAAM,EAAE3C,SAAS,EAAE+B,MAAM,GAAG,CAAC,IAC7B,CAACY,MAAM,EAAE3C,SAAS,IAAI,EAAE,EAAEiE,IAAI,CAC3B3B,QAAQ,IAAKA,QAAQ,CAACpB,UAAU,KAAK,UAAU,IAAI9B,MAAM,CAACuC,IAAI,CAACW,QAAQ,CAACV,UAAU,IAAI,CAAC,CAAC,CAAC,CAACG,MAAM,GAAG,CACtG,CAAC;EAEH,IAAII,GAAG,CAAClB,IAAI,KAAK,UAAU,EAAE;IAC3B0C,GAAG,CAAC5C,eAAe,GAAG,CAAC,CAAC;IACxB4C,GAAG,CAAChB,MAAM,CAACqB,QAAQ,GAAGA,QAAQ;IAC9BL,GAAG,CAAChB,MAAM,CAACmB,IAAI,GAAGA,IAAI;EACxB,CAAC,MAAM;IACLH,GAAG,CAAChB,MAAM,CAAC3C,SAAS,GAAG,EAAE;IACzB2D,GAAG,CAAChB,MAAM,CAACqB,QAAQ,GAAG,KAAK;EAC7B;EAEA,IAAI7B,GAAG,CAAC+B,IAAI,KAAK,YAAY,KAAK/B,GAAG,CAAClB,IAAI,KAAK,MAAM,IAAIkB,GAAG,CAAClB,IAAI,KAAK,UAAU,CAAC,EAAE;IACjF0C,GAAG,CAACQ,SAAS,GAAGf,kBAAkB,CAACgB,gBAAgB,GAAGhB,kBAAkB,CAACe,SAAS,GAAG,IAAI;IACzFR,GAAG,CAACU,mBAAmB,GAAGjB,kBAAkB,CAACkB,0BAA0B,GACnElB,kBAAkB,CAACiB,mBAAmB,GACtC,IAAI;EACV,CAAC,MAAM;IACLV,GAAG,CAACQ,SAAS,GAAG,IAAI;IACpBR,GAAG,CAACU,mBAAmB,GAAG,IAAI;IAC9BV,GAAG,CAAChB,MAAM,CAACwB,SAAS,GAAG,IAAI;IAC3BR,GAAG,CAAChB,MAAM,CAAC0B,mBAAmB,GAAG,IAAI;EACvC;EAEAV,GAAG,CAAChB,MAAM,CAACR,GAAG,GAAGA,GAAG;EACpBwB,GAAG,CAAChB,MAAM,CAAC4B,MAAM,GAAGnB,kBAAkB,CAACoB,aAAa,GAAGpB,kBAAkB,CAACmB,MAAM,GAAG,IAAI;EACvFZ,GAAG,CAACL,QAAQ,GAAGA,QAAQ;EAEvB7D,GAAG,CAAC,OAAO,EAAEkE,GAAG,CAAC;EACjBjB,OAAO,CAACiB,GAAG,CAAC;AACd,CAAC,CAAC;AAACX,OAAA,CAAApD,KAAA,GAAAA,KAAA;AAEL,MAAM6E,MAAM,GAAIC,MAAM,IAAKA,MAAM,CAACC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC,CAAC;;AAE1E,MAAMC,qBAAqB,GAAI1C,QAAQ,IACrC,IAAIO,OAAO,CAAEC,OAAO,IAAK;EACvB,MAAM;IAAE1C,SAAS;IAAE6E;EAAG,CAAC,GAAG3C,QAAQ;EAClC,MAAM;IAAET;EAAO,CAAC,GAAGzB,SAAS,IAAIA,SAAS,CAAC+B,MAAM,GAAG/B,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;EAEpE0C,OAAO,CAAC;IACNmC,EAAE;IACFvC,QAAQ,EAAEb,MAAM,IAAI,EAAE;IACtBY,cAAc,EAAEZ,MAAM,IAAI;EAC5B,CAAC,CAAC;AACJ,CAAC,CAAC;;AAEJ;AACA,MAAMqD,oBAAoB,GAAIC,GAAG,IAAMA,GAAG,CAACC,QAAQ,CAAC,IAAI,CAAC,GAAGD,GAAG,CAACrE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAGqE,GAAI;AAEnF,MAAME,uBAAuB,GAAI/C,QAAQ,IACvC,IAAIO,OAAO,CAAEC,OAAO,IAAK;EACvB,MAAM;IAAE1C,SAAS;IAAE6E;EAAG,CAAC,GAAG3C,QAAQ;EAClC,MAAM;IAAET;EAAO,CAAC,GAAGzB,SAAS,IAAIA,SAAS,CAAC+B,MAAM,GAAG/B,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;EAEpE,IAAI,CAACyB,MAAM,EAAE;IACXiB,OAAO,CAAC;MACNmC,EAAE;MACFK,OAAO,EAAE,CAAC,CAAC;MACX7C,cAAc,EAAE;IAClB,CAAC,CAAC;IAEF;EACF;EAEA,IAAI;IACF,MAAMjE,CAAC,GAAG8D,QAAQ,CAACiD,UAAU;IAC7B,MAAMC,cAAc,GAAG,6BAA6B;IAEpD,MAAM1G,CAAC,GAAG+F,MAAM,CAACrG,CAAC,CAAC,CAACiH,KAAK,CAACD,cAAc,CAAC;IACzC,MAAME,EAAE,GAAG5G,CAAC,CAACmD,GAAG,CAAExD,CAAC,IAAMA,CAAC,KAAK,EAAE,GAAGA,CAAC,GAAGA,CAAC,CAACsG,OAAO,CAAC,MAAM,EAAE,MAAM,MAAM,CAAE,CAAC;IACzE,MAAMY,EAAE,GAAGD,EAAE,CAACE,IAAI,CAAC,MAAM,CAAC;IAE1B,MAAMC,CAAC,GAAGhE,MAAM,CAACiE,KAAK,CAAC,IAAIC,MAAM,CAACJ,EAAE,CAAC,CAAC;IAEtC,MAAMK,KAAK,GAAGlH,CAAC,CAACqD,MAAM,GAAG,CAAC;IAE1B,IAAI,CAAC0D,CAAC,EAAE;MACN/C,OAAO,CAAC;QACNmC,EAAE;QACFK,OAAO,EAAE,CAAC,CAAC;QACX7C,cAAc,EAAEZ;MAClB,CAAC,CAAC;;MAEF;MACAoE,OAAO,CAACpG,GAAG,CAAC,uBAAuBf,CAAC,OAAO+C,MAAM,EAAE,CAAC;MAEpD;IACF;IAEAgE,CAAC,CAACK,KAAK,CAAC,CAAC;IAET,MAAMZ,OAAO,GAAG,CAAC,CAAC;IAElB,KAAK,IAAIvG,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGiH,KAAK,EAAEjH,CAAC,EAAE,EAAE;MAC9BuG,OAAO,CAAC,IAAIvG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG;QAAEoH,KAAK,EAAEjB,oBAAoB,CAACW,CAAC,CAAC9G,CAAC,CAAC,CAACqH,IAAI,CAAC,CAAC;MAAE,CAAC;IACrE;IAEAtD,OAAO,CAAC;MACNmC,EAAE;MACFK,OAAO;MACP7C,cAAc,EAAEZ;IAClB,CAAC,CAAC;EACJ,CAAC,CAAC,OAAOrD,CAAC,EAAE;IACVsE,OAAO,CAAC;MACNmC,EAAE;MACFK,OAAO,EAAE,CAAC,CAAC;MACX7C,cAAc,EAAEZ;IAClB,CAAC,CAAC;IACF;IACAoE,OAAO,CAACI,KAAK,CAAC7H,CAAC,CAAC8H,QAAQ,CAAC,CAAC,CAAC;EAC7B;AACF,CAAC,CAAC;AAEG,MAAMC,4BAA4B,GAAGA,CAACjE,QAAQ,EAAEC,GAAG,KAAK;EAC7D,IAAIA,GAAG,CAAClB,IAAI,KAAK,UAAU,IAAIkB,GAAG,CAAC+B,IAAI,KAAK,YAAY,EAAE;IACxD;IACA2B,OAAO,CAACI,KAAK,CAAC,uFAAuF,CAAC;IAEtG,OAAOxD,OAAO,CAACC,OAAO,CAAC,IAAI,CAAC;EAC9B;EAEA,IAAI,CAACR,QAAQ,CAAChC,YAAY,IAAI,EAAE,EAAEkG,WAAW,CAAC,CAAC,KAAK,QAAQ,EAAE;IAC5D,OAAOxB,qBAAqB,CAAC1C,QAAQ,EAAEC,GAAG,CAAC;EAC7C,CAAC,MAAM;IACL,OAAO8C,uBAAuB,CAAC/C,QAAQ,EAAEC,GAAG,CAAC;EAC/C;AACF,CAAC;;AAED;AAAAa,OAAA,CAAAmD,4BAAA,GAAAA,4BAAA;AACA,MAAME,YAAY,GAAIC,IAAI,IAAK,CAACA,IAAI,IAAI,EAAE,EAAEC,UAAU,CAAC,UAAU,EAAE,EAAE,CAAC;;AAEtE;AACA,MAAMC,UAAU,GAAIF,IAAI,IAAK,CAACA,IAAI,IAAI,EAAE,EAAE3B,OAAO,CAAC,oCAAoC,EAAE,EAAE,CAAC;AAEpF,MAAM8B,QAAQ,GAAGA,CAAC7G,KAAK,GAAG,CAAC,CAAC,EAAE+C,MAAM,GAAG,CAAC,CAAC,KAAK;EACnD,MAAM;IAAEwC,UAAU,GAAG,EAAE;IAAEnF,SAAS;IAAEE;EAAa,CAAC,GAAGN,KAAK;EAC1D,MAAM;IAAE8G;EAAiB,CAAC,GAAG/D,MAAM;EACnC,MAAMgE,eAAe,GAAG,CAAC,CAAC;EAC1B,MAAMC,MAAM,GAAG,CAAC,CAAC;EAEjB,CAAC,qBAAqB,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC9F,OAAO,CAAE+F,KAAK,IAAK;IAChE,IAAIlE,MAAM,CAACkE,KAAK,CAAC,EAAEC,QAAQ,IAAI,CAACN,UAAU,CAAC5G,KAAK,CAACiH,KAAK,CAAC,CAAC,EAAE;MACxDD,MAAM,CAACC,KAAK,CAAC,GAAG,yBAAyB;IAC3C;EACF,CAAC,CAAC;EAEF,CAAC7G,SAAS,IAAI,EAAE,EAAEc,OAAO,CAAC,CAACwB,QAAQ,EAAEyE,KAAK,KAAK;IAC7C,MAAM;MAAEtF;IAAO,CAAC,GAAGa,QAAQ;IAC3B,MAAM0E,kBAAkB,GAAG,CAAC,GAAG5H,MAAM,CAAC6H,OAAO,CAAC3E,QAAQ,CAACV,UAAU,IAAI,CAAC,CAAC,CAAC,CAAC,CAACsF,OAAO,CAAC,CAAC;IACnF,MAAMC,gBAAgB,GAAG,CAAC,CAAC;IAC3B,MAAMC,aAAa,GAAG,CAAC,CAAC;IAExB,IAAI3F,MAAM,KAAK,EAAE,EAAE;MACjB2F,aAAa,CAAC3F,MAAM,GAAG,8BAA8B;IACvD;IAEAuF,kBAAkB,CAAClG,OAAO,CAAC,CAAC,CAACuG,GAAG,EAAEtB,KAAK,CAAC,EAAEgB,KAAK,KAAK;MAClD,IAAIhB,KAAK,KAAK,EAAE,EAAE;QAChBoB,gBAAgB,CAACE,GAAG,CAAC,GAAG,8BAA8B;MACxD,CAAC,MAAM;QACL,MAAMC,eAAe,GACnB7F,MAAM,KAAKsE,KAAK,IAAIiB,kBAAkB,CAACtG,KAAK,CAACqG,KAAK,GAAG,CAAC,CAAC,CAAC9C,IAAI,CAAC,CAAC,GAAGsD,GAAG,CAAC,KAAKA,GAAG,KAAKxB,KAAK,CAAC;QAE1F,IAAIuB,eAAe,EAAE;UACnBH,gBAAgB,CAACE,GAAG,CAAC,GAAG,2BAA2B;QACrD;MACF;IACF,CAAC,CAAC;IAEF,IAAI,CAAC,IAAAvE,iBAAO,EAACsE,aAAa,CAAC,IAAI,CAAC,IAAAtE,iBAAO,EAACqE,gBAAgB,CAAC,EAAE;MACzDR,eAAe,CAACI,KAAK,CAAC,GAAG;QAAE,GAAGK,aAAa;QAAE,GAAGD;MAAiB,CAAC;IACpE;EACF,CAAC,CAAC;EAEF,IAAIjH,YAAY,KAAK,gBAAgB,EAAE;IACrC,MAAMsH,iBAAiB,GAAG,CAACrC,UAAU,CAACO,KAAK,CAAC,mBAAmB,CAAC,IAAI,EAAE,EAAE3D,MAAM;IAE9E,IAAIyF,iBAAiB,GAAGd,gBAAgB,EAAE;MACxCE,MAAM,CAACa,kBAAkB,GAAG,gBAAgBf,gBAAgB,oCAAoC;IAClG,CAAC,MAAM,IAAIc,iBAAiB,GAAG,CAAC,EAAE;MAChCZ,MAAM,CAACa,kBAAkB,GAAG,mDAAmD;IACjF;EACF;EAEA,IAAI,CAAC,IAAA3E,iBAAO,EAAC6D,eAAe,CAAC,EAAE;IAC7BC,MAAM,CAACD,eAAe,GAAGA,eAAe;EAC1C;EAEA,OAAOC,MAAM;AACf,CAAC;AAAC5D,OAAA,CAAAyD,QAAA,GAAAA,QAAA","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["_debug","_interopRequireDefault","require","_lodashEs","_feedback","_utils","_translator","_defaults","mv","_interopRequireWildcard","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","translator","Translator","log","debug","getResponseCorrectness","model","answerItem","isOutcome","correctResponses","responses","isAdvanced","responseType","ResponseTypes","advanced","correctness","score","correct","isAnswerCorrect","getIsAnswerCorrect","slice","correctnessObject","correctResponseItems","answerCorrect","forEach","correctResponse","opts","mode","validation","defaults","validationDefault","literal","allowTrailingZeros","ignoreOrder","acceptedValues","answer","concat","keys","alternates","map","alternateId","length","latexEqual","getCorrectness","question","env","session","completeAnswer","response","undefined","createDefaultModel","Promise","resolve","config","getLogTrace","traceLog","push","studentAnswer","cleanStudentAnswer","replace","responsesToCheck","index","exports","outcome","completed","logTrace","isEmpty","empty","normalize","allowTrailingZerosDefault","ignoreOrderDefault","normalizedQuestion","extraCSSRules","language","simple","feedback","feedbackEnabled","getActualFeedbackForCorrectness","out","disabled","view","note","lng","showNote","some","role","rationale","rationaleEnabled","teacherInstructions","teacherInstructionsEnabled","prompt","promptEnabled","escape","string","simpleSessionResponse","id","removeTrailingEscape","str","endsWith","advancedSessionResponse","answers","expression","RESPONSE_TOKEN","split","to","tt","join","m","match","RegExp","count","console","shift","value","trim","error","toString","createCorrectResponseSession","toLowerCase","getInnerText","html","replaceAll","getContent","validate","maxResponseAreas","responsesErrors","errors","field","required","reversedAlternates","entries","reverse","alternatesErrors","responseError","key","identicalAnswer","val","nbOfResponseAreas","responseAreasError"],"sources":["../src/index.js"],"sourcesContent":["import debug from 'debug';\nimport { isEmpty } from 'lodash-es';\nimport { getActualFeedbackForCorrectness } from '@pie-lib/feedback';\n\nimport { ResponseTypes } from './utils';\nimport Translator from '@pie-lib/translator';\n\nconst { translator } = Translator;\nimport defaults from './defaults';\n\nimport * as mv from '@pie-framework/math-validation';\n\nconst log = debug('@pie-element:math-inline:controller');\n\nconst getResponseCorrectness = (model, answerItem, isOutcome) => {\n const correctResponses = model.responses;\n const isAdvanced = model.responseType === ResponseTypes.advanced;\n\n if (!answerItem) {\n return {\n correctness: 'unanswered',\n score: isOutcome ? 0 : '0%',\n correct: false,\n };\n }\n\n const isAnswerCorrect = getIsAnswerCorrect(isAdvanced ? correctResponses : correctResponses.slice(0, 1), answerItem);\n\n const correctnessObject = {\n correctness: 'incorrect',\n score: isOutcome ? 0 : '0%',\n correct: false,\n };\n\n if (isAnswerCorrect) {\n correctnessObject.correctness = 'correct';\n correctnessObject.score = isOutcome ? 1 : '100%';\n correctnessObject.correct = true;\n }\n\n return correctnessObject;\n};\n\nfunction getIsAnswerCorrect(correctResponseItems, answerItem) {\n let answerCorrect = false;\n\n (correctResponseItems || []).forEach((correctResponse) => {\n if (answerCorrect) return;\n\n const opts = {\n mode: correctResponse.validation || defaults.validationDefault,\n };\n\n if (opts.mode === 'literal') {\n opts.literal = {\n allowTrailingZeros: correctResponse.allowTrailingZeros || false,\n ignoreOrder: correctResponse.ignoreOrder || false,\n };\n }\n\n const acceptedValues = [correctResponse.answer].concat(\n Object.keys(correctResponse.alternates || {}).map((alternateId) => correctResponse.alternates[alternateId]),\n );\n\n for (let i = 0; i < acceptedValues.length; i++) {\n try {\n if (mv.latexEqual(answerItem, acceptedValues[i], opts)) {\n answerCorrect = true;\n break;\n }\n } catch (e) {\n log('Parse failure when evaluating math', acceptedValues[i], answerItem, e);\n continue;\n }\n }\n });\n\n return answerCorrect;\n}\n\nconst getCorrectness = (question, env, session, isOutcome) => {\n if (env.mode === 'evaluate') {\n return getResponseCorrectness(\n question,\n question.responseType === ResponseTypes.advanced\n ? (session && session.completeAnswer) || ''\n : session && session.response,\n isOutcome,\n );\n }\n\n return undefined;\n};\n\nexport function createDefaultModel(model = {}) {\n return new Promise((resolve) => {\n resolve({\n config: {\n ...defaults,\n ...model,\n },\n });\n });\n}\n\n/**\n * Generates detailed trace log for math-inline scoring evaluation\n * @param {Object} question\n * @param {Object} session\n * @param {Object} env\n * @returns {Array<string>} traceLog\n */\nexport const getLogTrace = (question, session, env) => {\n const traceLog = [];\n\n if (!session || (!session.response && !session.completeAnswer)) {\n traceLog.push('Student did not enter a response.');\n return traceLog;\n }\n\n const responseType = question?.responseType;\n const isAdvanced = responseType === ResponseTypes.advanced;\n const studentAnswer = isAdvanced ? session.completeAnswer : session.response;\n\n const cleanStudentAnswer = studentAnswer ? studentAnswer.replace(/\\\\/g, '') : '';\n\n if (!cleanStudentAnswer) {\n traceLog.push('Student entered a response, but then it was removed.');\n return traceLog;\n }\n\n traceLog.push(`Student entered response: ${cleanStudentAnswer}.`);\n traceLog.push(`Response type: ${isAdvanced ? 'advanced' : 'simple'}.`);\n\n const responses = question.responses || [];\n const responsesToCheck = isAdvanced ? responses : responses.slice(0, 1);\n \n responsesToCheck.forEach((response, index) => {\n const validation = response.validation || question.validationDefault;\n traceLog.push(`Response ${index + 1} validation mode: ${validation}.`);\n \n if (validation === 'literal') {\n const allowTrailingZeros = response.allowTrailingZeros || false;\n const ignoreOrder = response.ignoreOrder || false;\n\n traceLog.push(`Allow trailing zeros: ${allowTrailingZeros ? 'enabled' : 'disabled'}.`);\n traceLog.push(`Ignore order: ${ignoreOrder ? 'enabled' : 'disabled'}.`);\n }\n \n const acceptedValues = [response.answer].concat(\n Object.keys(response.alternates || {}).map((alternateId) => response.alternates[alternateId])\n );\n \n if (acceptedValues.length > 1) {\n traceLog.push(`Accepted answers: ${acceptedValues.length} (including alternates).`);\n }\n });\n\n const correctness = getCorrectness(question, env, session, true);\n\n if (correctness.correctness === 'correct') {\n traceLog.push('Student answer matches one of the accepted responses.');\n } else if (correctness.correctness === 'incorrect') {\n traceLog.push('Student answer does not match any of the accepted responses.');\n } else {\n traceLog.push('Student answer could not be evaluated.');\n }\n\n traceLog.push(`Response evaluated as ${correctness.correctness}.`);\n traceLog.push(`Final score: ${correctness.score}.`);\n\n return traceLog;\n};\n\nexport const outcome = (question, session, env) => {\n return new Promise((resolve) => {\n if (env.mode !== 'evaluate') {\n resolve({ score: undefined, completed: undefined, logTrace: [] });\n } else {\n if (!session || isEmpty(session)) {\n resolve({ score: 0, empty: true, logTrace: ['Student did not enter a response.'] });\n } else {\n const correctness = getCorrectness(question, env, session, true);\n\n resolve({ score: correctness.score, logTrace: getLogTrace(question, session, env) });\n }\n }\n });\n};\n\nexport const normalize = (question) => {\n // making sure that defaults are set\n if (!isEmpty(question.responses)) {\n question.responses = question.responses.map((correctResponse) => ({\n ...correctResponse,\n validation: correctResponse.validation || question.validationDefault,\n allowTrailingZeros: correctResponse.allowTrailingZeros || question.allowTrailingZerosDefault,\n ignoreOrder: correctResponse.ignoreOrder || question.ignoreOrderDefault,\n }));\n }\n\n return { ...defaults, ...question };\n};\n\nexport const model = (question, session, env) =>\n new Promise((resolve) => {\n const normalizedQuestion = normalize(question);\n const correctness = getCorrectness(normalizedQuestion, env, session);\n const { extraCSSRules, responses, language, ...config } = normalizedQuestion;\n\n config.responses = config.responseType === ResponseTypes.simple ? responses.slice(0, 1) : responses;\n\n const feedback =\n env.mode === 'evaluate' && normalizedQuestion.feedbackEnabled\n ? getActualFeedbackForCorrectness(correctness?.correctness, normalizedQuestion.feedback)\n : undefined;\n\n const out = {\n extraCSSRules,\n config,\n correctness,\n feedback,\n disabled: env.mode !== 'gather',\n view: env.mode === 'view',\n };\n\n const note = normalizedQuestion.note || translator.t('mathInline.primaryCorrectWithAlternates', { lng: language });\n const showNote =\n config?.responses?.length > 1 ||\n (config?.responses || []).some(\n (response) => response.validation === 'symbolic' || Object.keys(response.alternates || {}).length > 0,\n );\n\n if (env.mode === 'evaluate') {\n out.correctResponse = {};\n out.config.showNote = showNote;\n out.config.note = note;\n } else {\n out.config.responses = [];\n out.config.showNote = false;\n }\n\n if (env.role === 'instructor' && (env.mode === 'view' || env.mode === 'evaluate')) {\n out.rationale = normalizedQuestion.rationaleEnabled ? normalizedQuestion.rationale : null;\n out.teacherInstructions = normalizedQuestion.teacherInstructionsEnabled\n ? normalizedQuestion.teacherInstructions\n : null;\n } else {\n out.rationale = null;\n out.teacherInstructions = null;\n out.config.rationale = null;\n out.config.teacherInstructions = null;\n }\n\n out.config.env = env;\n out.config.prompt = normalizedQuestion.promptEnabled ? normalizedQuestion.prompt : null;\n out.language = language;\n\n log('out: ', out);\n resolve(out);\n });\n\nconst escape = (string) => string.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'); // $& means the whole matched string\n\nconst simpleSessionResponse = (question) =>\n new Promise((resolve) => {\n const { responses, id } = question;\n const { answer } = responses && responses.length ? responses[0] : {};\n\n resolve({\n id,\n response: answer || '',\n completeAnswer: answer || '',\n });\n });\n\n// use this for items like E672793\nconst removeTrailingEscape = (str) => (str.endsWith('\\\\') ? str.slice(0, -1) : str);\n\nconst advancedSessionResponse = (question) =>\n new Promise((resolve) => {\n const { responses, id } = question;\n const { answer } = responses && responses.length ? responses[0] : {};\n\n if (!answer) {\n resolve({\n id,\n answers: {},\n completeAnswer: '',\n });\n\n return;\n }\n\n try {\n const e = question.expression;\n const RESPONSE_TOKEN = /\\\\{\\\\{\\s*response\\s*\\\\}\\\\}/g;\n\n const o = escape(e).split(RESPONSE_TOKEN);\n const to = o.map((t) => (t === '' ? t : t.replace(/\\s+/g, () => '\\\\s*')));\n const tt = to.join('(.*)');\n\n const m = answer.match(new RegExp(tt));\n\n const count = o.length - 1;\n\n if (!m) {\n resolve({\n id,\n answers: {},\n completeAnswer: answer,\n });\n\n // eslint-disable-next-line no-console\n console.log(`can not find match: ${o} in ${answer}`);\n\n return;\n }\n\n m.shift();\n\n const answers = {};\n\n for (var i = 0; i < count; i++) {\n answers[`r${i + 1}`] = { value: removeTrailingEscape(m[i].trim()) };\n }\n\n resolve({\n id,\n answers,\n completeAnswer: answer,\n });\n } catch (e) {\n resolve({\n id,\n answers: {},\n completeAnswer: answer,\n });\n // eslint-disable-next-line no-console\n console.error(e.toString());\n }\n });\n\nexport const createCorrectResponseSession = (question, env) => {\n if (env.mode === 'evaluate' || env.role !== 'instructor') {\n // eslint-disable-next-line no-console\n console.error('can not create correct response session if mode is evaluate or role is not instructor');\n\n return Promise.resolve(null);\n }\n\n if ((question.responseType || '').toLowerCase() === 'simple') {\n return simpleSessionResponse(question, env);\n } else {\n return advancedSessionResponse(question, env);\n }\n};\n\n// remove all html tags\nconst getInnerText = (html) => (html || '').replaceAll(/<[^>]*>/g, '');\n\n// remove all html tags except img, iframe and source tag for audio\nconst getContent = (html) => (html || '').replace(/(<(?!img|iframe|source)([^>]+)>)/gi, '');\n\nexport const validate = (model = {}, config = {}) => {\n const { expression = '', responses, responseType } = model;\n const { maxResponseAreas } = config;\n const responsesErrors = {};\n const errors = {};\n\n ['teacherInstructions', 'prompt', 'rationale'].forEach((field) => {\n if (config[field]?.required && !getContent(model[field])) {\n errors[field] = 'This field is required.';\n }\n });\n\n (responses || []).forEach((response, index) => {\n const { answer } = response;\n const reversedAlternates = [...Object.entries(response.alternates || {})].reverse();\n const alternatesErrors = {};\n const responseError = {};\n\n if (answer === '') {\n responseError.answer = 'Content should not be empty.';\n }\n\n reversedAlternates.forEach(([key, value], index) => {\n if (value === '') {\n alternatesErrors[key] = 'Content should not be empty.';\n } else {\n const identicalAnswer =\n answer === value || reversedAlternates.slice(index + 1).some(([, val]) => val === value);\n\n if (identicalAnswer) {\n alternatesErrors[key] = 'Content should be unique.';\n }\n }\n });\n\n if (!isEmpty(responseError) || !isEmpty(alternatesErrors)) {\n responsesErrors[index] = { ...responseError, ...alternatesErrors };\n }\n });\n\n if (responseType === 'Advanced Multi') {\n const nbOfResponseAreas = (expression.match(/\\{\\{response\\}\\}/g) || []).length;\n\n if (nbOfResponseAreas > maxResponseAreas) {\n errors.responseAreasError = `No more than ${maxResponseAreas} response areas should be defined.`;\n } else if (nbOfResponseAreas < 1) {\n errors.responseAreasError = 'There should be at least 1 response area defined.';\n }\n }\n\n if (!isEmpty(responsesErrors)) {\n errors.responsesErrors = responsesErrors;\n }\n\n return errors;\n};\n"],"mappings":"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","ignoreList":[]}
|
package/controller/package.json
CHANGED
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
7
|
-
"version": "11.
|
|
7
|
+
"version": "11.2.0-next.0",
|
|
8
8
|
"main": "lib/index.js",
|
|
9
9
|
"description": "",
|
|
10
10
|
"scripts": {
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
},
|
|
33
33
|
"author": "",
|
|
34
34
|
"license": "ISC",
|
|
35
|
-
"gitHead": "
|
|
35
|
+
"gitHead": "11169f258ac462817f622c5272b360009b6675ab",
|
|
36
36
|
"module": "src/index.js",
|
|
37
37
|
"exports": {
|
|
38
38
|
".": "./src/index.js",
|