@pie-element/math-inline 12.1.1-next.147 → 12.1.1-next.16
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/configure.js +2 -0
- package/controller.js +1 -0
- package/dist/author/configure.d.ts +25 -0
- package/dist/author/configure.js +114 -0
- package/dist/author/defaults.d.ts +186 -0
- package/dist/author/defaults.js +145 -0
- package/dist/author/general-config-block.d.ts +35 -0
- package/dist/author/general-config-block.js +390 -0
- package/dist/author/index.d.ts +61 -0
- package/dist/author/index.js +80 -0
- package/dist/author/response.d.ts +40 -0
- package/dist/author/response.js +238 -0
- package/dist/author/utils.d.ts +14 -0
- package/dist/author/utils.js +13 -0
- package/dist/browser/author/index.js +35601 -0
- package/dist/browser/author/index.js.map +1 -0
- package/dist/browser/controller/index.js +37791 -0
- package/dist/browser/controller/index.js.map +1 -0
- package/dist/browser/delivery/index.js +84 -0
- package/dist/browser/delivery/index.js.map +1 -0
- package/dist/browser/dist--pvq7WNe.js +324 -0
- package/dist/browser/dist--pvq7WNe.js.map +1 -0
- package/dist/browser/dist-D8taXDhz.js +16748 -0
- package/dist/browser/dist-D8taXDhz.js.map +1 -0
- package/dist/browser/dist-DiGNNRzu.js +1426 -0
- package/dist/browser/dist-DiGNNRzu.js.map +1 -0
- package/dist/browser/main-AjqUtC75.js +973 -0
- package/dist/browser/main-AjqUtC75.js.map +1 -0
- package/dist/browser/math-inline.css +2 -0
- package/dist/browser/print/index.js +50 -0
- package/dist/browser/print/index.js.map +1 -0
- package/dist/controller/defaults.d.ts +44 -0
- package/dist/controller/defaults.js +39 -0
- package/dist/controller/index.d.ts +22 -0
- package/dist/controller/index.js +171 -0
- package/dist/controller/utils.d.ts +12 -0
- package/dist/controller/utils.js +7 -0
- package/dist/delivery/index.d.ts +22 -0
- package/dist/delivery/index.js +55 -0
- package/dist/delivery/main.d.ts +44 -0
- package/dist/delivery/main.js +606 -0
- package/dist/delivery/simple-question-block.d.ts +27 -0
- package/dist/delivery/simple-question-block.js +94 -0
- package/dist/delivery/utils.d.ts +12 -0
- package/dist/delivery/utils.js +7 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.iife.d.ts +8 -0
- package/dist/index.iife.js +224 -0
- package/dist/index.js +2 -0
- package/dist/math-inline.css +2 -0
- package/dist/print/index.d.ts +15 -0
- package/dist/print/index.js +50 -0
- package/dist/runtime-support.d.ts +12 -0
- package/dist/runtime-support.js +12 -0
- package/package.json +98 -25
- package/CHANGELOG.json +0 -2627
- package/CHANGELOG.md +0 -2473
- package/LICENSE.md +0 -5
- package/README.md +0 -3
- package/configure/CHANGELOG.json +0 -1652
- package/configure/CHANGELOG.md +0 -2101
- package/configure/lib/configure.js +0 -186
- package/configure/lib/configure.js.map +0 -1
- package/configure/lib/defaults.js +0 -185
- package/configure/lib/defaults.js.map +0 -1
- package/configure/lib/general-config-block.js +0 -525
- package/configure/lib/general-config-block.js.map +0 -1
- package/configure/lib/index.js +0 -140
- package/configure/lib/index.js.map +0 -1
- package/configure/lib/response.js +0 -369
- package/configure/lib/response.js.map +0 -1
- package/configure/lib/utils.js +0 -31
- package/configure/lib/utils.js.map +0 -1
- package/configure/package.json +0 -29
- package/controller/CHANGELOG.json +0 -1002
- package/controller/CHANGELOG.md +0 -1536
- package/controller/lib/defaults.js +0 -43
- package/controller/lib/defaults.js.map +0 -1
- package/controller/lib/index.js +0 -383
- package/controller/lib/index.js.map +0 -1
- package/controller/lib/utils.js +0 -11
- package/controller/lib/utils.js.map +0 -1
- package/controller/package.json +0 -26
- package/docs/config-schema.json +0 -2071
- package/docs/config-schema.json.md +0 -1533
- package/docs/demo/config.js +0 -8
- package/docs/demo/generate.js +0 -41
- package/docs/demo/index.html +0 -1
- package/docs/demo/session.js +0 -11
- package/docs/pie-schema.json +0 -1472
- package/docs/pie-schema.json.md +0 -845
- package/lib/index.js +0 -94
- package/lib/index.js.map +0 -1
- package/lib/main.js +0 -1030
- package/lib/main.js.map +0 -1
- package/lib/print.js +0 -92
- package/lib/print.js.map +0 -1
- package/lib/simple-question-block.js +0 -148
- package/lib/simple-question-block.js.map +0 -1
- package/lib/utils.js +0 -11
- package/lib/utils.js.map +0 -1
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = void 0;
|
|
7
|
-
var _utils = require("./utils");
|
|
8
|
-
var _default = exports.default = {
|
|
9
|
-
allowTrailingZerosDefault: false,
|
|
10
|
-
customKeys: [],
|
|
11
|
-
equationEditor: '8',
|
|
12
|
-
expression: '',
|
|
13
|
-
feedback: {
|
|
14
|
-
correct: {
|
|
15
|
-
default: 'Correct',
|
|
16
|
-
type: 'none'
|
|
17
|
-
},
|
|
18
|
-
incorrect: {
|
|
19
|
-
default: 'Incorrect',
|
|
20
|
-
type: 'none'
|
|
21
|
-
},
|
|
22
|
-
partial: {
|
|
23
|
-
default: 'Nearly',
|
|
24
|
-
type: 'none'
|
|
25
|
-
}
|
|
26
|
-
},
|
|
27
|
-
feedbackEnabled: false,
|
|
28
|
-
ignoreOrderDefault: false,
|
|
29
|
-
partialScoring: true,
|
|
30
|
-
prompt: '',
|
|
31
|
-
promptEnabled: true,
|
|
32
|
-
rationale: '',
|
|
33
|
-
rationaleEnabled: true,
|
|
34
|
-
responseType: _utils.ResponseTypes.advanced,
|
|
35
|
-
responses: [],
|
|
36
|
-
scoringType: 'auto',
|
|
37
|
-
studentInstructionsEnabled: true,
|
|
38
|
-
teacherInstructions: '',
|
|
39
|
-
teacherInstructionsEnabled: true,
|
|
40
|
-
toolbarEditorPosition: 'bottom',
|
|
41
|
-
validationDefault: 'literal'
|
|
42
|
-
};
|
|
43
|
-
//# sourceMappingURL=defaults.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"defaults.js","names":["_utils","require","_default","exports","default","allowTrailingZerosDefault","customKeys","equationEditor","expression","feedback","correct","type","incorrect","partial","feedbackEnabled","ignoreOrderDefault","partialScoring","prompt","promptEnabled","rationale","rationaleEnabled","responseType","ResponseTypes","advanced","responses","scoringType","studentInstructionsEnabled","teacherInstructions","teacherInstructionsEnabled","toolbarEditorPosition","validationDefault"],"sources":["../src/defaults.js"],"sourcesContent":["import { ResponseTypes } from './utils';\n\nexport default {\n allowTrailingZerosDefault: false,\n customKeys: [],\n equationEditor: '8',\n expression: '',\n feedback: {\n correct: { default: 'Correct', type: 'none' },\n incorrect: { default: 'Incorrect', type: 'none' },\n partial: { default: 'Nearly', type: 'none' },\n },\n feedbackEnabled: false,\n ignoreOrderDefault: false,\n partialScoring: true,\n prompt: '',\n promptEnabled: true,\n rationale: '',\n rationaleEnabled: true,\n responseType: ResponseTypes.advanced,\n responses: [],\n scoringType: 'auto',\n studentInstructionsEnabled: true,\n teacherInstructions: '',\n teacherInstructionsEnabled: true,\n toolbarEditorPosition: 'bottom',\n validationDefault: 'literal',\n};\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAAwC,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEzB;EACbC,yBAAyB,EAAE,KAAK;EAChCC,UAAU,EAAE,EAAE;EACdC,cAAc,EAAE,GAAG;EACnBC,UAAU,EAAE,EAAE;EACdC,QAAQ,EAAE;IACRC,OAAO,EAAE;MAAEN,OAAO,EAAE,SAAS;MAAEO,IAAI,EAAE;IAAO,CAAC;IAC7CC,SAAS,EAAE;MAAER,OAAO,EAAE,WAAW;MAAEO,IAAI,EAAE;IAAO,CAAC;IACjDE,OAAO,EAAE;MAAET,OAAO,EAAE,QAAQ;MAAEO,IAAI,EAAE;IAAO;EAC7C,CAAC;EACDG,eAAe,EAAE,KAAK;EACtBC,kBAAkB,EAAE,KAAK;EACzBC,cAAc,EAAE,IAAI;EACpBC,MAAM,EAAE,EAAE;EACVC,aAAa,EAAE,IAAI;EACnBC,SAAS,EAAE,EAAE;EACbC,gBAAgB,EAAE,IAAI;EACtBC,YAAY,EAAEC,oBAAa,CAACC,QAAQ;EACpCC,SAAS,EAAE,EAAE;EACbC,WAAW,EAAE,MAAM;EACnBC,0BAA0B,EAAE,IAAI;EAChCC,mBAAmB,EAAE,EAAE;EACvBC,0BAA0B,EAAE,IAAI;EAChCC,qBAAqB,EAAE,QAAQ;EAC/BC,iBAAiB,EAAE;AACrB,CAAC","ignoreList":[]}
|
package/controller/lib/index.js
DELETED
|
@@ -1,383 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
Object.defineProperty(exports, "__esModule", {
|
|
5
|
-
value: true
|
|
6
|
-
});
|
|
7
|
-
exports.createCorrectResponseSession = void 0;
|
|
8
|
-
exports.createDefaultModel = createDefaultModel;
|
|
9
|
-
exports.validate = exports.outcome = exports.normalize = exports.model = exports.getLogTrace = void 0;
|
|
10
|
-
var _debug = _interopRequireDefault(require("debug"));
|
|
11
|
-
var _lodashEs = require("lodash-es");
|
|
12
|
-
var _feedback = require("@pie-lib/feedback");
|
|
13
|
-
var _utils = require("./utils");
|
|
14
|
-
var _translator = _interopRequireDefault(require("@pie-lib/translator"));
|
|
15
|
-
var _defaults = _interopRequireDefault(require("./defaults"));
|
|
16
|
-
var mv = _interopRequireWildcard(require("@pie-framework/math-validation"));
|
|
17
|
-
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
18
|
-
const {
|
|
19
|
-
translator
|
|
20
|
-
} = _translator.default;
|
|
21
|
-
const log = (0, _debug.default)('@pie-element:math-inline:controller');
|
|
22
|
-
const getResponseCorrectness = (model, answerItem, isOutcome) => {
|
|
23
|
-
const correctResponses = model.responses;
|
|
24
|
-
const isAdvanced = model.responseType === _utils.ResponseTypes.advanced;
|
|
25
|
-
if (!answerItem) {
|
|
26
|
-
return {
|
|
27
|
-
correctness: 'unanswered',
|
|
28
|
-
score: isOutcome ? 0 : '0%',
|
|
29
|
-
correct: false
|
|
30
|
-
};
|
|
31
|
-
}
|
|
32
|
-
const isAnswerCorrect = getIsAnswerCorrect(isAdvanced ? correctResponses : correctResponses.slice(0, 1), answerItem);
|
|
33
|
-
const correctnessObject = {
|
|
34
|
-
correctness: 'incorrect',
|
|
35
|
-
score: isOutcome ? 0 : '0%',
|
|
36
|
-
correct: false
|
|
37
|
-
};
|
|
38
|
-
if (isAnswerCorrect) {
|
|
39
|
-
correctnessObject.correctness = 'correct';
|
|
40
|
-
correctnessObject.score = isOutcome ? 1 : '100%';
|
|
41
|
-
correctnessObject.correct = true;
|
|
42
|
-
}
|
|
43
|
-
return correctnessObject;
|
|
44
|
-
};
|
|
45
|
-
function getIsAnswerCorrect(correctResponseItems, answerItem) {
|
|
46
|
-
let answerCorrect = false;
|
|
47
|
-
(correctResponseItems || []).forEach(correctResponse => {
|
|
48
|
-
if (answerCorrect) return;
|
|
49
|
-
const opts = {
|
|
50
|
-
mode: correctResponse.validation || _defaults.default.validationDefault
|
|
51
|
-
};
|
|
52
|
-
if (opts.mode === 'literal') {
|
|
53
|
-
opts.literal = {
|
|
54
|
-
allowTrailingZeros: correctResponse.allowTrailingZeros || false,
|
|
55
|
-
ignoreOrder: correctResponse.ignoreOrder || false
|
|
56
|
-
};
|
|
57
|
-
}
|
|
58
|
-
const acceptedValues = [correctResponse.answer].concat(Object.keys(correctResponse.alternates || {}).map(alternateId => correctResponse.alternates[alternateId]));
|
|
59
|
-
for (let i = 0; i < acceptedValues.length; i++) {
|
|
60
|
-
try {
|
|
61
|
-
if (mv.latexEqual(answerItem, acceptedValues[i], opts)) {
|
|
62
|
-
answerCorrect = true;
|
|
63
|
-
break;
|
|
64
|
-
}
|
|
65
|
-
} catch (e) {
|
|
66
|
-
log('Parse failure when evaluating math', acceptedValues[i], answerItem, e);
|
|
67
|
-
continue;
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
});
|
|
71
|
-
return answerCorrect;
|
|
72
|
-
}
|
|
73
|
-
const getCorrectness = (question, env, session, isOutcome) => {
|
|
74
|
-
if (env.mode === 'evaluate') {
|
|
75
|
-
return getResponseCorrectness(question, question.responseType === _utils.ResponseTypes.advanced ? session && session.completeAnswer || '' : session && session.response, isOutcome);
|
|
76
|
-
}
|
|
77
|
-
return undefined;
|
|
78
|
-
};
|
|
79
|
-
function createDefaultModel(model = {}) {
|
|
80
|
-
return new Promise(resolve => {
|
|
81
|
-
resolve({
|
|
82
|
-
config: {
|
|
83
|
-
..._defaults.default,
|
|
84
|
-
...model
|
|
85
|
-
}
|
|
86
|
-
});
|
|
87
|
-
});
|
|
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;
|
|
142
|
-
const outcome = (question, session, env) => {
|
|
143
|
-
return new Promise(resolve => {
|
|
144
|
-
if (env.mode !== 'evaluate') {
|
|
145
|
-
resolve({
|
|
146
|
-
score: undefined,
|
|
147
|
-
completed: undefined,
|
|
148
|
-
logTrace: []
|
|
149
|
-
});
|
|
150
|
-
} else {
|
|
151
|
-
if (!session || (0, _lodashEs.isEmpty)(session)) {
|
|
152
|
-
resolve({
|
|
153
|
-
score: 0,
|
|
154
|
-
empty: true,
|
|
155
|
-
logTrace: ['Student did not enter a response.']
|
|
156
|
-
});
|
|
157
|
-
} else {
|
|
158
|
-
const correctness = getCorrectness(question, env, session, true);
|
|
159
|
-
resolve({
|
|
160
|
-
score: correctness.score,
|
|
161
|
-
logTrace: getLogTrace(question, session, env)
|
|
162
|
-
});
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
});
|
|
166
|
-
};
|
|
167
|
-
exports.outcome = outcome;
|
|
168
|
-
const normalize = question => {
|
|
169
|
-
// making sure that defaults are set
|
|
170
|
-
if (!(0, _lodashEs.isEmpty)(question.responses)) {
|
|
171
|
-
question.responses = question.responses.map(correctResponse => ({
|
|
172
|
-
...correctResponse,
|
|
173
|
-
validation: correctResponse.validation || question.validationDefault,
|
|
174
|
-
allowTrailingZeros: correctResponse.allowTrailingZeros || question.allowTrailingZerosDefault,
|
|
175
|
-
ignoreOrder: correctResponse.ignoreOrder || question.ignoreOrderDefault
|
|
176
|
-
}));
|
|
177
|
-
}
|
|
178
|
-
return {
|
|
179
|
-
..._defaults.default,
|
|
180
|
-
...question
|
|
181
|
-
};
|
|
182
|
-
};
|
|
183
|
-
exports.normalize = normalize;
|
|
184
|
-
const model = (question, session, env) => new Promise(resolve => {
|
|
185
|
-
const normalizedQuestion = normalize(question);
|
|
186
|
-
const correctness = getCorrectness(normalizedQuestion, env, session);
|
|
187
|
-
const {
|
|
188
|
-
extraCSSRules,
|
|
189
|
-
responses,
|
|
190
|
-
language,
|
|
191
|
-
...config
|
|
192
|
-
} = normalizedQuestion;
|
|
193
|
-
config.responses = config.responseType === _utils.ResponseTypes.simple ? responses.slice(0, 1) : responses;
|
|
194
|
-
const feedback = env.mode === 'evaluate' && normalizedQuestion.feedbackEnabled ? (0, _feedback.getActualFeedbackForCorrectness)(correctness?.correctness, normalizedQuestion.feedback) : undefined;
|
|
195
|
-
const out = {
|
|
196
|
-
extraCSSRules,
|
|
197
|
-
config,
|
|
198
|
-
correctness,
|
|
199
|
-
feedback,
|
|
200
|
-
disabled: env.mode !== 'gather',
|
|
201
|
-
view: env.mode === 'view'
|
|
202
|
-
};
|
|
203
|
-
const note = normalizedQuestion.note || translator.t('mathInline.primaryCorrectWithAlternates', {
|
|
204
|
-
lng: language
|
|
205
|
-
});
|
|
206
|
-
const showNote = config?.responses?.length > 1 || (config?.responses || []).some(response => response.validation === 'symbolic' || Object.keys(response.alternates || {}).length > 0);
|
|
207
|
-
if (env.mode === 'evaluate') {
|
|
208
|
-
out.correctResponse = {};
|
|
209
|
-
out.config.showNote = showNote;
|
|
210
|
-
out.config.note = note;
|
|
211
|
-
} else {
|
|
212
|
-
out.config.responses = [];
|
|
213
|
-
out.config.showNote = false;
|
|
214
|
-
}
|
|
215
|
-
if (env.role === 'instructor' && (env.mode === 'view' || env.mode === 'evaluate')) {
|
|
216
|
-
out.rationale = normalizedQuestion.rationaleEnabled ? normalizedQuestion.rationale : null;
|
|
217
|
-
out.teacherInstructions = normalizedQuestion.teacherInstructionsEnabled ? normalizedQuestion.teacherInstructions : null;
|
|
218
|
-
} else {
|
|
219
|
-
out.rationale = null;
|
|
220
|
-
out.teacherInstructions = null;
|
|
221
|
-
out.config.rationale = null;
|
|
222
|
-
out.config.teacherInstructions = null;
|
|
223
|
-
}
|
|
224
|
-
out.config.env = env;
|
|
225
|
-
out.config.prompt = normalizedQuestion.promptEnabled ? normalizedQuestion.prompt : null;
|
|
226
|
-
out.language = language;
|
|
227
|
-
log('out: ', out);
|
|
228
|
-
resolve(out);
|
|
229
|
-
});
|
|
230
|
-
exports.model = model;
|
|
231
|
-
const escape = string => string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
|
|
232
|
-
|
|
233
|
-
const simpleSessionResponse = question => new Promise(resolve => {
|
|
234
|
-
const {
|
|
235
|
-
responses,
|
|
236
|
-
id
|
|
237
|
-
} = question;
|
|
238
|
-
const {
|
|
239
|
-
answer
|
|
240
|
-
} = responses && responses.length ? responses[0] : {};
|
|
241
|
-
resolve({
|
|
242
|
-
id,
|
|
243
|
-
response: answer || '',
|
|
244
|
-
completeAnswer: answer || ''
|
|
245
|
-
});
|
|
246
|
-
});
|
|
247
|
-
|
|
248
|
-
// use this for items like E672793
|
|
249
|
-
const removeTrailingEscape = str => str.endsWith('\\') ? str.slice(0, -1) : str;
|
|
250
|
-
const advancedSessionResponse = question => new Promise(resolve => {
|
|
251
|
-
const {
|
|
252
|
-
responses,
|
|
253
|
-
id
|
|
254
|
-
} = question;
|
|
255
|
-
const {
|
|
256
|
-
answer
|
|
257
|
-
} = responses && responses.length ? responses[0] : {};
|
|
258
|
-
if (!answer) {
|
|
259
|
-
resolve({
|
|
260
|
-
id,
|
|
261
|
-
answers: {},
|
|
262
|
-
completeAnswer: ''
|
|
263
|
-
});
|
|
264
|
-
return;
|
|
265
|
-
}
|
|
266
|
-
try {
|
|
267
|
-
const e = question.expression;
|
|
268
|
-
const RESPONSE_TOKEN = /\\{\\{\s*response\s*\\}\\}/g;
|
|
269
|
-
const o = escape(e).split(RESPONSE_TOKEN);
|
|
270
|
-
const to = o.map(t => t === '' ? t : t.replace(/\s+/g, () => '\\s*'));
|
|
271
|
-
const tt = to.join('(.*)');
|
|
272
|
-
const m = answer.match(new RegExp(tt));
|
|
273
|
-
const count = o.length - 1;
|
|
274
|
-
if (!m) {
|
|
275
|
-
resolve({
|
|
276
|
-
id,
|
|
277
|
-
answers: {},
|
|
278
|
-
completeAnswer: answer
|
|
279
|
-
});
|
|
280
|
-
|
|
281
|
-
// eslint-disable-next-line no-console
|
|
282
|
-
console.log(`can not find match: ${o} in ${answer}`);
|
|
283
|
-
return;
|
|
284
|
-
}
|
|
285
|
-
m.shift();
|
|
286
|
-
const answers = {};
|
|
287
|
-
for (var i = 0; i < count; i++) {
|
|
288
|
-
answers[`r${i + 1}`] = {
|
|
289
|
-
value: removeTrailingEscape(m[i].trim())
|
|
290
|
-
};
|
|
291
|
-
}
|
|
292
|
-
resolve({
|
|
293
|
-
id,
|
|
294
|
-
answers,
|
|
295
|
-
completeAnswer: answer
|
|
296
|
-
});
|
|
297
|
-
} catch (e) {
|
|
298
|
-
resolve({
|
|
299
|
-
id,
|
|
300
|
-
answers: {},
|
|
301
|
-
completeAnswer: answer
|
|
302
|
-
});
|
|
303
|
-
// eslint-disable-next-line no-console
|
|
304
|
-
console.error(e.toString());
|
|
305
|
-
}
|
|
306
|
-
});
|
|
307
|
-
const createCorrectResponseSession = (question, env) => {
|
|
308
|
-
if (env.mode === 'evaluate' || env.role !== 'instructor') {
|
|
309
|
-
// eslint-disable-next-line no-console
|
|
310
|
-
console.error('can not create correct response session if mode is evaluate or role is not instructor');
|
|
311
|
-
return Promise.resolve(null);
|
|
312
|
-
}
|
|
313
|
-
if ((question.responseType || '').toLowerCase() === 'simple') {
|
|
314
|
-
return simpleSessionResponse(question, env);
|
|
315
|
-
} else {
|
|
316
|
-
return advancedSessionResponse(question, env);
|
|
317
|
-
}
|
|
318
|
-
};
|
|
319
|
-
|
|
320
|
-
// remove all html tags
|
|
321
|
-
exports.createCorrectResponseSession = createCorrectResponseSession;
|
|
322
|
-
const getInnerText = html => (html || '').replaceAll(/<[^>]*>/g, '');
|
|
323
|
-
|
|
324
|
-
// remove all html tags except img, iframe and source tag for audio
|
|
325
|
-
const getContent = html => (html || '').replace(/(<(?!img|iframe|source)([^>]+)>)/gi, '');
|
|
326
|
-
const validate = (model = {}, config = {}) => {
|
|
327
|
-
const {
|
|
328
|
-
expression = '',
|
|
329
|
-
responses,
|
|
330
|
-
responseType
|
|
331
|
-
} = model;
|
|
332
|
-
const {
|
|
333
|
-
maxResponseAreas
|
|
334
|
-
} = config;
|
|
335
|
-
const responsesErrors = {};
|
|
336
|
-
const errors = {};
|
|
337
|
-
['teacherInstructions', 'prompt', 'rationale'].forEach(field => {
|
|
338
|
-
if (config[field]?.required && !getContent(model[field])) {
|
|
339
|
-
errors[field] = 'This field is required.';
|
|
340
|
-
}
|
|
341
|
-
});
|
|
342
|
-
(responses || []).forEach((response, index) => {
|
|
343
|
-
const {
|
|
344
|
-
answer
|
|
345
|
-
} = response;
|
|
346
|
-
const reversedAlternates = [...Object.entries(response.alternates || {})].reverse();
|
|
347
|
-
const alternatesErrors = {};
|
|
348
|
-
const responseError = {};
|
|
349
|
-
if (answer === '') {
|
|
350
|
-
responseError.answer = 'Content should not be empty.';
|
|
351
|
-
}
|
|
352
|
-
reversedAlternates.forEach(([key, value], index) => {
|
|
353
|
-
if (value === '') {
|
|
354
|
-
alternatesErrors[key] = 'Content should not be empty.';
|
|
355
|
-
} else {
|
|
356
|
-
const identicalAnswer = answer === value || reversedAlternates.slice(index + 1).some(([, val]) => val === value);
|
|
357
|
-
if (identicalAnswer) {
|
|
358
|
-
alternatesErrors[key] = 'Content should be unique.';
|
|
359
|
-
}
|
|
360
|
-
}
|
|
361
|
-
});
|
|
362
|
-
if (!(0, _lodashEs.isEmpty)(responseError) || !(0, _lodashEs.isEmpty)(alternatesErrors)) {
|
|
363
|
-
responsesErrors[index] = {
|
|
364
|
-
...responseError,
|
|
365
|
-
...alternatesErrors
|
|
366
|
-
};
|
|
367
|
-
}
|
|
368
|
-
});
|
|
369
|
-
if (responseType === 'Advanced Multi') {
|
|
370
|
-
const nbOfResponseAreas = (expression.match(/\{\{response\}\}/g) || []).length;
|
|
371
|
-
if (nbOfResponseAreas > maxResponseAreas) {
|
|
372
|
-
errors.responseAreasError = `No more than ${maxResponseAreas} response areas should be defined.`;
|
|
373
|
-
} else if (nbOfResponseAreas < 1) {
|
|
374
|
-
errors.responseAreasError = 'There should be at least 1 response area defined.';
|
|
375
|
-
}
|
|
376
|
-
}
|
|
377
|
-
if (!(0, _lodashEs.isEmpty)(responsesErrors)) {
|
|
378
|
-
errors.responsesErrors = responsesErrors;
|
|
379
|
-
}
|
|
380
|
-
return errors;
|
|
381
|
-
};
|
|
382
|
-
exports.validate = validate;
|
|
383
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
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/lib/utils.js
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.ResponseTypes = void 0;
|
|
7
|
-
const ResponseTypes = exports.ResponseTypes = {
|
|
8
|
-
advanced: 'Advanced Multi',
|
|
9
|
-
simple: 'Simple'
|
|
10
|
-
};
|
|
11
|
-
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","names":["ResponseTypes","exports","advanced","simple"],"sources":["../src/utils.js"],"sourcesContent":["export const ResponseTypes = {\n advanced: 'Advanced Multi',\n simple: 'Simple',\n};\n"],"mappings":";;;;;;AAAO,MAAMA,aAAa,GAAAC,OAAA,CAAAD,aAAA,GAAG;EAC3BE,QAAQ,EAAE,gBAAgB;EAC1BC,MAAM,EAAE;AACV,CAAC","ignoreList":[]}
|
package/controller/package.json
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@pie-element/math-inline-controller",
|
|
3
|
-
"private": true,
|
|
4
|
-
"version": "10.1.0",
|
|
5
|
-
"description": "",
|
|
6
|
-
"main": "lib/index.js",
|
|
7
|
-
"module": "src/index.js",
|
|
8
|
-
"scripts": {
|
|
9
|
-
"test": "./node_modules/.bin/jest"
|
|
10
|
-
},
|
|
11
|
-
"dependencies": {
|
|
12
|
-
"@pie-framework/math-validation": "^1.4.2",
|
|
13
|
-
"@pie-lib/feedback": "2.0.2",
|
|
14
|
-
"@pie-lib/translator": "4.0.2",
|
|
15
|
-
"debug": "^4.1.1",
|
|
16
|
-
"lodash-es": "^4.17.23"
|
|
17
|
-
},
|
|
18
|
-
"devDependencies": {
|
|
19
|
-
"babel-jest": "^29.7.0",
|
|
20
|
-
"babel-preset-env": "^1.6.1",
|
|
21
|
-
"babel-preset-stage-0": "^6.24.1",
|
|
22
|
-
"jest": "^29.7.0"
|
|
23
|
-
},
|
|
24
|
-
"author": "",
|
|
25
|
-
"license": "ISC"
|
|
26
|
-
}
|