@playcademy/sandbox 0.7.1-beta.19 → 0.7.1-beta.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.js +17 -5
- package/dist/server.js +17 -5
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -1123,7 +1123,7 @@ var package_default;
|
|
|
1123
1123
|
var init_package = __esm(() => {
|
|
1124
1124
|
package_default = {
|
|
1125
1125
|
name: "@playcademy/sandbox",
|
|
1126
|
-
version: "0.7.1-beta.
|
|
1126
|
+
version: "0.7.1-beta.20",
|
|
1127
1127
|
description: "Local development server for Playcademy game development",
|
|
1128
1128
|
type: "module",
|
|
1129
1129
|
exports: {
|
|
@@ -9554,6 +9554,12 @@ function responseValues(value) {
|
|
|
9554
9554
|
return Array.isArray(value) ? value : [value];
|
|
9555
9555
|
}
|
|
9556
9556
|
function assessmentResponseValidationMessage(assessment, responses) {
|
|
9557
|
+
return responseValidationMessage(assessment, responses, false);
|
|
9558
|
+
}
|
|
9559
|
+
function assessmentDraftResponseValidationMessage(assessment, responses) {
|
|
9560
|
+
return responseValidationMessage(assessment, responses, true);
|
|
9561
|
+
}
|
|
9562
|
+
function responseValidationMessage(assessment, responses, allowIncomplete) {
|
|
9557
9563
|
const items = new Map(assessment.items.map((item) => [item.identifier, item]));
|
|
9558
9564
|
for (const [itemIdentifier, itemResponses] of Object.entries(responses)) {
|
|
9559
9565
|
const item = items.get(itemIdentifier);
|
|
@@ -9570,7 +9576,7 @@ function assessmentResponseValidationMessage(assessment, responses) {
|
|
|
9570
9576
|
if (!interaction) {
|
|
9571
9577
|
return `Response for ${itemIdentifier} uses unknown identifier ${responseIdentifier}.`;
|
|
9572
9578
|
}
|
|
9573
|
-
const message = interactionResponseValidationMessage(itemIdentifier, interaction, responseValue);
|
|
9579
|
+
const message = interactionResponseValidationMessage(itemIdentifier, interaction, responseValue, allowIncomplete);
|
|
9574
9580
|
if (message) {
|
|
9575
9581
|
return message;
|
|
9576
9582
|
}
|
|
@@ -9613,7 +9619,7 @@ function undirectedPairsValidationMessage(itemIdentifier, values, interaction) {
|
|
|
9613
9619
|
}
|
|
9614
9620
|
return null;
|
|
9615
9621
|
}
|
|
9616
|
-
function interactionResponseValidationMessage(itemIdentifier, interaction, responseValue) {
|
|
9622
|
+
function interactionResponseValidationMessage(itemIdentifier, interaction, responseValue, allowIncomplete) {
|
|
9617
9623
|
if (!isAssessmentResponseValue(responseValue)) {
|
|
9618
9624
|
return `Response for ${itemIdentifier} is not a usable value: non-empty text, at most ${TIMEBACK_ASSESSMENT_RESPONSE_VALUE_MAX_LENGTH} characters.`;
|
|
9619
9625
|
}
|
|
@@ -9684,7 +9690,7 @@ function interactionResponseValidationMessage(itemIdentifier, interaction, respo
|
|
|
9684
9690
|
allowed = new Set(interaction.segments.flatMap((segment) => segment.selectable && segment.identifier ? [segment.identifier] : []));
|
|
9685
9691
|
maximum = interaction.maxChoices;
|
|
9686
9692
|
}
|
|
9687
|
-
if (values.length < minimum || maximum !== 0 && values.length > maximum || new Set(values).size !== values.length || allowed && values.some((value) => !allowed.has(value))) {
|
|
9693
|
+
if (!allowIncomplete && values.length < minimum || maximum !== 0 && values.length > maximum || new Set(values).size !== values.length || allowed && values.some((value) => !allowed.has(value))) {
|
|
9688
9694
|
return `Response for ${itemIdentifier} is not valid for its interaction.`;
|
|
9689
9695
|
}
|
|
9690
9696
|
return null;
|
|
@@ -91379,6 +91385,12 @@ function validateAssessmentResponses(assessment, responses) {
|
|
|
91379
91385
|
throw new AssessmentRuntimeError("INVALID_RESPONSE", message);
|
|
91380
91386
|
}
|
|
91381
91387
|
}
|
|
91388
|
+
function validateAssessmentDraftResponses(assessment, responses) {
|
|
91389
|
+
const message = assessmentDraftResponseValidationMessage(assessment, responses);
|
|
91390
|
+
if (message) {
|
|
91391
|
+
throw new AssessmentRuntimeError("INVALID_RESPONSE", message);
|
|
91392
|
+
}
|
|
91393
|
+
}
|
|
91382
91394
|
function assessmentScoringRequests(assessment, responses) {
|
|
91383
91395
|
return assessment.items.map((item) => ({
|
|
91384
91396
|
itemIdentifier: item.identifier,
|
|
@@ -91835,7 +91847,7 @@ class TimebackAssessmentRuntimeService {
|
|
|
91835
91847
|
}
|
|
91836
91848
|
validateAssessmentResponseUpdate(assessment, input.responses);
|
|
91837
91849
|
const responses = applyAssessmentResponseUpdate(attempt.metadata.responses, input.responses);
|
|
91838
|
-
|
|
91850
|
+
validateAssessmentDraftResponses(assessment, responses);
|
|
91839
91851
|
const metadata2 = {
|
|
91840
91852
|
...attempt.metadata,
|
|
91841
91853
|
responses,
|
package/dist/server.js
CHANGED
|
@@ -1122,7 +1122,7 @@ var package_default;
|
|
|
1122
1122
|
var init_package = __esm(() => {
|
|
1123
1123
|
package_default = {
|
|
1124
1124
|
name: "@playcademy/sandbox",
|
|
1125
|
-
version: "0.7.1-beta.
|
|
1125
|
+
version: "0.7.1-beta.20",
|
|
1126
1126
|
description: "Local development server for Playcademy game development",
|
|
1127
1127
|
type: "module",
|
|
1128
1128
|
exports: {
|
|
@@ -9553,6 +9553,12 @@ function responseValues(value) {
|
|
|
9553
9553
|
return Array.isArray(value) ? value : [value];
|
|
9554
9554
|
}
|
|
9555
9555
|
function assessmentResponseValidationMessage(assessment, responses) {
|
|
9556
|
+
return responseValidationMessage(assessment, responses, false);
|
|
9557
|
+
}
|
|
9558
|
+
function assessmentDraftResponseValidationMessage(assessment, responses) {
|
|
9559
|
+
return responseValidationMessage(assessment, responses, true);
|
|
9560
|
+
}
|
|
9561
|
+
function responseValidationMessage(assessment, responses, allowIncomplete) {
|
|
9556
9562
|
const items = new Map(assessment.items.map((item) => [item.identifier, item]));
|
|
9557
9563
|
for (const [itemIdentifier, itemResponses] of Object.entries(responses)) {
|
|
9558
9564
|
const item = items.get(itemIdentifier);
|
|
@@ -9569,7 +9575,7 @@ function assessmentResponseValidationMessage(assessment, responses) {
|
|
|
9569
9575
|
if (!interaction) {
|
|
9570
9576
|
return `Response for ${itemIdentifier} uses unknown identifier ${responseIdentifier}.`;
|
|
9571
9577
|
}
|
|
9572
|
-
const message = interactionResponseValidationMessage(itemIdentifier, interaction, responseValue);
|
|
9578
|
+
const message = interactionResponseValidationMessage(itemIdentifier, interaction, responseValue, allowIncomplete);
|
|
9573
9579
|
if (message) {
|
|
9574
9580
|
return message;
|
|
9575
9581
|
}
|
|
@@ -9612,7 +9618,7 @@ function undirectedPairsValidationMessage(itemIdentifier, values, interaction) {
|
|
|
9612
9618
|
}
|
|
9613
9619
|
return null;
|
|
9614
9620
|
}
|
|
9615
|
-
function interactionResponseValidationMessage(itemIdentifier, interaction, responseValue) {
|
|
9621
|
+
function interactionResponseValidationMessage(itemIdentifier, interaction, responseValue, allowIncomplete) {
|
|
9616
9622
|
if (!isAssessmentResponseValue(responseValue)) {
|
|
9617
9623
|
return `Response for ${itemIdentifier} is not a usable value: non-empty text, at most ${TIMEBACK_ASSESSMENT_RESPONSE_VALUE_MAX_LENGTH} characters.`;
|
|
9618
9624
|
}
|
|
@@ -9683,7 +9689,7 @@ function interactionResponseValidationMessage(itemIdentifier, interaction, respo
|
|
|
9683
9689
|
allowed = new Set(interaction.segments.flatMap((segment) => segment.selectable && segment.identifier ? [segment.identifier] : []));
|
|
9684
9690
|
maximum = interaction.maxChoices;
|
|
9685
9691
|
}
|
|
9686
|
-
if (values.length < minimum || maximum !== 0 && values.length > maximum || new Set(values).size !== values.length || allowed && values.some((value) => !allowed.has(value))) {
|
|
9692
|
+
if (!allowIncomplete && values.length < minimum || maximum !== 0 && values.length > maximum || new Set(values).size !== values.length || allowed && values.some((value) => !allowed.has(value))) {
|
|
9687
9693
|
return `Response for ${itemIdentifier} is not valid for its interaction.`;
|
|
9688
9694
|
}
|
|
9689
9695
|
return null;
|
|
@@ -91378,6 +91384,12 @@ function validateAssessmentResponses(assessment, responses) {
|
|
|
91378
91384
|
throw new AssessmentRuntimeError("INVALID_RESPONSE", message);
|
|
91379
91385
|
}
|
|
91380
91386
|
}
|
|
91387
|
+
function validateAssessmentDraftResponses(assessment, responses) {
|
|
91388
|
+
const message = assessmentDraftResponseValidationMessage(assessment, responses);
|
|
91389
|
+
if (message) {
|
|
91390
|
+
throw new AssessmentRuntimeError("INVALID_RESPONSE", message);
|
|
91391
|
+
}
|
|
91392
|
+
}
|
|
91381
91393
|
function assessmentScoringRequests(assessment, responses) {
|
|
91382
91394
|
return assessment.items.map((item) => ({
|
|
91383
91395
|
itemIdentifier: item.identifier,
|
|
@@ -91834,7 +91846,7 @@ class TimebackAssessmentRuntimeService {
|
|
|
91834
91846
|
}
|
|
91835
91847
|
validateAssessmentResponseUpdate(assessment, input.responses);
|
|
91836
91848
|
const responses = applyAssessmentResponseUpdate(attempt.metadata.responses, input.responses);
|
|
91837
|
-
|
|
91849
|
+
validateAssessmentDraftResponses(assessment, responses);
|
|
91838
91850
|
const metadata2 = {
|
|
91839
91851
|
...attempt.metadata,
|
|
91840
91852
|
responses,
|