@vived/host 4.4.1 → 4.5.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.
@@ -112,7 +112,7 @@ class ChallengeResultsImp extends ChallengeResultsEntity {
112
112
  }
113
113
  case "PROGRESS": {
114
114
  const progressData = result.resultData;
115
- return progressData.maxProgress;
115
+ return progressData.maxProgress / 100;
116
116
  }
117
117
  default:
118
118
  return 0;
@@ -1 +1 @@
1
- {"version":3,"file":"ChallengeResults.js","sourceRoot":"","sources":["../../../../src/ChallengeResults/Entities/ChallengeResults.ts"],"names":[],"mappings":"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","sourcesContent":["import {\r\n getSingletonComponent,\r\n AppObject,\r\n AppObjectEntity,\r\n AppObjectRepo\r\n} from \"@vived/core\";\r\n\r\nexport type ChallengeResultType =\r\n | \"HIT\"\r\n | \"MULTIHIT\"\r\n | \"QUALITY\"\r\n | \"SCORE\"\r\n | \"PROGRESS\";\r\n\r\nexport interface ChallengeResult {\r\n slideID: string;\r\n tries: number;\r\n message: string;\r\n type: ChallengeResultType;\r\n resultData:\r\n | ChallengeResultHitData\r\n | ChallengeResultMultiHitData\r\n | ChallengeResultQualityData\r\n | ChallengeResultScoreData\r\n | ChallengeResultProgressData;\r\n}\r\n\r\nexport interface ChallengeResultHitData {\r\n success: boolean;\r\n}\r\n\r\nexport interface ChallengeResultProgressData {\r\n maxProgress: number;\r\n}\r\n\r\nexport interface ChallengeResultMultiHitData {\r\n hits: number;\r\n misses: number;\r\n unanswered: number;\r\n}\r\n\r\nexport interface ChallengeResultQualityData {\r\n stars: number;\r\n maxStars: number;\r\n}\r\n\r\nexport interface ChallengeResultScoreData {\r\n score: number;\r\n maxScore: number;\r\n}\r\n\r\nexport abstract class ChallengeResultsEntity extends AppObjectEntity {\r\n static type = \"ChallengeResultsEntity\";\r\n\r\n abstract get results(): ChallengeResult[];\r\n abstract submitHitResult: (\r\n slideID: string,\r\n success: boolean,\r\n tries: number,\r\n message: string\r\n ) => void;\r\n\r\n abstract submitMultiHitResult: (\r\n slideID: string,\r\n hits: number,\r\n misses: number,\r\n unanswered: number,\r\n tries: number,\r\n message: string\r\n ) => void;\r\n\r\n abstract submitQualityResult: (\r\n slideID: string,\r\n stars: number,\r\n maxStars: number,\r\n tries: number,\r\n message: string\r\n ) => void;\r\n\r\n abstract submitScoreResult: (\r\n slideID: string,\r\n score: number,\r\n maxScore: number,\r\n tries: number,\r\n message: string\r\n ) => void;\r\n\r\n abstract submitProgressResult: (\r\n slideID: string,\r\n maxProgress: number,\r\n message: string\r\n ) => void;\r\n\r\n abstract getResultForSlide: (slideID: string) => ChallengeResult | undefined;\r\n\r\n abstract getScoreForSlide: (slideID: string) => number;\r\n\r\n static get(appObjects: AppObjectRepo) {\r\n return getSingletonComponent<ChallengeResultsEntity>(\r\n ChallengeResultsEntity.type,\r\n appObjects\r\n );\r\n }\r\n}\r\n\r\nexport function makeChallengeResults(\r\n appObject: AppObject\r\n): ChallengeResultsEntity {\r\n return new ChallengeResultsImp(appObject);\r\n}\r\n\r\nclass ChallengeResultsImp extends ChallengeResultsEntity {\r\n private resultLookup = new Map<string, ChallengeResult>();\r\n\r\n get results(): ChallengeResult[] {\r\n return Array.from(this.resultLookup.values());\r\n }\r\n\r\n submitHitResult = (\r\n slideID: string,\r\n success: boolean,\r\n tries: number,\r\n message: string\r\n ): void => {\r\n const resultData: ChallengeResultHitData = {\r\n success\r\n };\r\n const result: ChallengeResult = {\r\n slideID,\r\n message,\r\n resultData,\r\n tries,\r\n type: \"HIT\"\r\n };\r\n\r\n this.resultLookup.set(slideID, result);\r\n this.notifyOnChange();\r\n };\r\n\r\n submitMultiHitResult = (\r\n slideID: string,\r\n hits: number,\r\n misses: number,\r\n unanswered: number,\r\n tries: number,\r\n message: string\r\n ): void => {\r\n const resultData: ChallengeResultMultiHitData = {\r\n hits,\r\n misses,\r\n unanswered\r\n };\r\n const result: ChallengeResult = {\r\n slideID,\r\n message,\r\n resultData,\r\n tries,\r\n type: \"MULTIHIT\"\r\n };\r\n\r\n this.resultLookup.set(slideID, result);\r\n this.notifyOnChange();\r\n };\r\n\r\n submitQualityResult = (\r\n slideID: string,\r\n stars: number,\r\n maxStars: number,\r\n tries: number,\r\n message: string\r\n ): void => {\r\n const resultData: ChallengeResultQualityData = {\r\n stars,\r\n maxStars\r\n };\r\n const result: ChallengeResult = {\r\n slideID,\r\n message,\r\n resultData,\r\n tries,\r\n type: \"QUALITY\"\r\n };\r\n\r\n this.resultLookup.set(slideID, result);\r\n this.notifyOnChange();\r\n };\r\n\r\n submitScoreResult = (\r\n slideID: string,\r\n score: number,\r\n maxScore: number,\r\n tries: number,\r\n message: string\r\n ): void => {\r\n const resultData: ChallengeResultScoreData = {\r\n score,\r\n maxScore\r\n };\r\n const result: ChallengeResult = {\r\n slideID,\r\n message,\r\n resultData,\r\n tries,\r\n type: \"SCORE\"\r\n };\r\n\r\n this.resultLookup.set(slideID, result);\r\n this.notifyOnChange();\r\n };\r\n\r\n getResultForSlide = (slideID: string): ChallengeResult | undefined => {\r\n return this.resultLookup.get(slideID);\r\n };\r\n\r\n getScoreForSlide = (slideID: string): number => {\r\n const result = this.getResultForSlide(slideID);\r\n if (!result) {\r\n return 0;\r\n }\r\n\r\n switch (result.type) {\r\n case \"HIT\": {\r\n const hitData = result.resultData as ChallengeResultHitData;\r\n return hitData.success ? 1 : 0;\r\n }\r\n case \"MULTIHIT\": {\r\n const multiHitData = result.resultData as ChallengeResultMultiHitData;\r\n const total = multiHitData.hits + multiHitData.unanswered;\r\n return total > 0 ? multiHitData.hits / total : 0;\r\n }\r\n case \"QUALITY\": {\r\n const qualityData = result.resultData as ChallengeResultQualityData;\r\n return qualityData.maxStars > 0\r\n ? qualityData.stars / qualityData.maxStars\r\n : 0;\r\n }\r\n case \"SCORE\": {\r\n const scoreData = result.resultData as ChallengeResultScoreData;\r\n return scoreData.maxScore > 0\r\n ? scoreData.score / scoreData.maxScore\r\n : 0;\r\n }\r\n case \"PROGRESS\": {\r\n const progressData = result.resultData as ChallengeResultProgressData;\r\n return progressData.maxProgress;\r\n }\r\n default:\r\n return 0;\r\n }\r\n };\r\n\r\n submitProgressResult = (\r\n slideID: string,\r\n maxProgress: number,\r\n message: string\r\n ): void => {\r\n const currentResult = this.getResultForSlide(slideID);\r\n if (\r\n currentResult &&\r\n (currentResult.resultData as ChallengeResultProgressData).maxProgress >\r\n maxProgress\r\n ) {\r\n return;\r\n }\r\n\r\n const resultData: ChallengeResultProgressData = {\r\n maxProgress\r\n };\r\n const result: ChallengeResult = {\r\n slideID,\r\n message,\r\n resultData,\r\n tries: 1,\r\n type: \"PROGRESS\"\r\n };\r\n\r\n this.resultLookup.set(slideID, result);\r\n this.notifyOnChange();\r\n };\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, ChallengeResultsEntity.type);\r\n this.appObjects.registerSingleton(this);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"ChallengeResults.js","sourceRoot":"","sources":["../../../../src/ChallengeResults/Entities/ChallengeResults.ts"],"names":[],"mappings":"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","sourcesContent":["import {\r\n getSingletonComponent,\r\n AppObject,\r\n AppObjectEntity,\r\n AppObjectRepo\r\n} from \"@vived/core\";\r\n\r\nexport type ChallengeResultType =\r\n | \"HIT\"\r\n | \"MULTIHIT\"\r\n | \"QUALITY\"\r\n | \"SCORE\"\r\n | \"PROGRESS\";\r\n\r\nexport interface ChallengeResult {\r\n slideID: string;\r\n tries: number;\r\n message: string;\r\n type: ChallengeResultType;\r\n resultData:\r\n | ChallengeResultHitData\r\n | ChallengeResultMultiHitData\r\n | ChallengeResultQualityData\r\n | ChallengeResultScoreData\r\n | ChallengeResultProgressData;\r\n}\r\n\r\nexport interface ChallengeResultHitData {\r\n success: boolean;\r\n}\r\n\r\nexport interface ChallengeResultProgressData {\r\n maxProgress: number;\r\n}\r\n\r\nexport interface ChallengeResultMultiHitData {\r\n hits: number;\r\n misses: number;\r\n unanswered: number;\r\n}\r\n\r\nexport interface ChallengeResultQualityData {\r\n stars: number;\r\n maxStars: number;\r\n}\r\n\r\nexport interface ChallengeResultScoreData {\r\n score: number;\r\n maxScore: number;\r\n}\r\n\r\nexport abstract class ChallengeResultsEntity extends AppObjectEntity {\r\n static type = \"ChallengeResultsEntity\";\r\n\r\n abstract get results(): ChallengeResult[];\r\n abstract submitHitResult: (\r\n slideID: string,\r\n success: boolean,\r\n tries: number,\r\n message: string\r\n ) => void;\r\n\r\n abstract submitMultiHitResult: (\r\n slideID: string,\r\n hits: number,\r\n misses: number,\r\n unanswered: number,\r\n tries: number,\r\n message: string\r\n ) => void;\r\n\r\n abstract submitQualityResult: (\r\n slideID: string,\r\n stars: number,\r\n maxStars: number,\r\n tries: number,\r\n message: string\r\n ) => void;\r\n\r\n abstract submitScoreResult: (\r\n slideID: string,\r\n score: number,\r\n maxScore: number,\r\n tries: number,\r\n message: string\r\n ) => void;\r\n\r\n abstract submitProgressResult: (\r\n slideID: string,\r\n maxProgress: number,\r\n message: string\r\n ) => void;\r\n\r\n abstract getResultForSlide: (slideID: string) => ChallengeResult | undefined;\r\n\r\n abstract getScoreForSlide: (slideID: string) => number;\r\n\r\n static get(appObjects: AppObjectRepo) {\r\n return getSingletonComponent<ChallengeResultsEntity>(\r\n ChallengeResultsEntity.type,\r\n appObjects\r\n );\r\n }\r\n}\r\n\r\nexport function makeChallengeResults(\r\n appObject: AppObject\r\n): ChallengeResultsEntity {\r\n return new ChallengeResultsImp(appObject);\r\n}\r\n\r\nclass ChallengeResultsImp extends ChallengeResultsEntity {\r\n private resultLookup = new Map<string, ChallengeResult>();\r\n\r\n get results(): ChallengeResult[] {\r\n return Array.from(this.resultLookup.values());\r\n }\r\n\r\n submitHitResult = (\r\n slideID: string,\r\n success: boolean,\r\n tries: number,\r\n message: string\r\n ): void => {\r\n const resultData: ChallengeResultHitData = {\r\n success\r\n };\r\n const result: ChallengeResult = {\r\n slideID,\r\n message,\r\n resultData,\r\n tries,\r\n type: \"HIT\"\r\n };\r\n\r\n this.resultLookup.set(slideID, result);\r\n this.notifyOnChange();\r\n };\r\n\r\n submitMultiHitResult = (\r\n slideID: string,\r\n hits: number,\r\n misses: number,\r\n unanswered: number,\r\n tries: number,\r\n message: string\r\n ): void => {\r\n const resultData: ChallengeResultMultiHitData = {\r\n hits,\r\n misses,\r\n unanswered\r\n };\r\n const result: ChallengeResult = {\r\n slideID,\r\n message,\r\n resultData,\r\n tries,\r\n type: \"MULTIHIT\"\r\n };\r\n\r\n this.resultLookup.set(slideID, result);\r\n this.notifyOnChange();\r\n };\r\n\r\n submitQualityResult = (\r\n slideID: string,\r\n stars: number,\r\n maxStars: number,\r\n tries: number,\r\n message: string\r\n ): void => {\r\n const resultData: ChallengeResultQualityData = {\r\n stars,\r\n maxStars\r\n };\r\n const result: ChallengeResult = {\r\n slideID,\r\n message,\r\n resultData,\r\n tries,\r\n type: \"QUALITY\"\r\n };\r\n\r\n this.resultLookup.set(slideID, result);\r\n this.notifyOnChange();\r\n };\r\n\r\n submitScoreResult = (\r\n slideID: string,\r\n score: number,\r\n maxScore: number,\r\n tries: number,\r\n message: string\r\n ): void => {\r\n const resultData: ChallengeResultScoreData = {\r\n score,\r\n maxScore\r\n };\r\n const result: ChallengeResult = {\r\n slideID,\r\n message,\r\n resultData,\r\n tries,\r\n type: \"SCORE\"\r\n };\r\n\r\n this.resultLookup.set(slideID, result);\r\n this.notifyOnChange();\r\n };\r\n\r\n getResultForSlide = (slideID: string): ChallengeResult | undefined => {\r\n return this.resultLookup.get(slideID);\r\n };\r\n\r\n getScoreForSlide = (slideID: string): number => {\r\n const result = this.getResultForSlide(slideID);\r\n if (!result) {\r\n return 0;\r\n }\r\n\r\n switch (result.type) {\r\n case \"HIT\": {\r\n const hitData = result.resultData as ChallengeResultHitData;\r\n return hitData.success ? 1 : 0;\r\n }\r\n case \"MULTIHIT\": {\r\n const multiHitData = result.resultData as ChallengeResultMultiHitData;\r\n const total = multiHitData.hits + multiHitData.unanswered;\r\n return total > 0 ? multiHitData.hits / total : 0;\r\n }\r\n case \"QUALITY\": {\r\n const qualityData = result.resultData as ChallengeResultQualityData;\r\n return qualityData.maxStars > 0\r\n ? qualityData.stars / qualityData.maxStars\r\n : 0;\r\n }\r\n case \"SCORE\": {\r\n const scoreData = result.resultData as ChallengeResultScoreData;\r\n return scoreData.maxScore > 0\r\n ? scoreData.score / scoreData.maxScore\r\n : 0;\r\n }\r\n case \"PROGRESS\": {\r\n const progressData = result.resultData as ChallengeResultProgressData;\r\n return progressData.maxProgress / 100;\r\n }\r\n default:\r\n return 0;\r\n }\r\n };\r\n\r\n submitProgressResult = (\r\n slideID: string,\r\n maxProgress: number,\r\n message: string\r\n ): void => {\r\n const currentResult = this.getResultForSlide(slideID);\r\n if (\r\n currentResult &&\r\n (currentResult.resultData as ChallengeResultProgressData).maxProgress >\r\n maxProgress\r\n ) {\r\n return;\r\n }\r\n\r\n const resultData: ChallengeResultProgressData = {\r\n maxProgress\r\n };\r\n const result: ChallengeResult = {\r\n slideID,\r\n message,\r\n resultData,\r\n tries: 1,\r\n type: \"PROGRESS\"\r\n };\r\n\r\n this.resultLookup.set(slideID, result);\r\n this.notifyOnChange();\r\n };\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, ChallengeResultsEntity.type);\r\n this.appObjects.registerSingleton(this);\r\n }\r\n}\r\n"]}
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SubmitExpectedResultHandler = void 0;
4
+ exports.makeSubmitExpectedResultHandler = makeSubmitExpectedResultHandler;
5
+ const core_1 = require("@vived/core");
6
+ const Entities_1 = require("../Entities");
7
+ const HostStateMachine_1 = require("../../StateMachine/Entities/HostStateMachine");
8
+ class SubmitExpectedResultHandler extends core_1.AppObjectUC {
9
+ constructor() {
10
+ super(...arguments);
11
+ this.requestType = "SUBMIT_EXPECTED_RESULT";
12
+ }
13
+ }
14
+ exports.SubmitExpectedResultHandler = SubmitExpectedResultHandler;
15
+ SubmitExpectedResultHandler.type = "SubmitExpectedResultHandler";
16
+ function makeSubmitExpectedResultHandler(appObject) {
17
+ return new SubmitExpectedResultHandlerImp(appObject);
18
+ }
19
+ class SubmitExpectedResultHandlerImp extends SubmitExpectedResultHandler {
20
+ castPayloadV1(payload) {
21
+ const castPayload = payload;
22
+ if (!castPayload.responseType) {
23
+ throw new Entities_1.UnableToParsePayload(this.requestType, 1, JSON.stringify(payload));
24
+ }
25
+ return castPayload;
26
+ }
27
+ constructor(appObject) {
28
+ super(appObject, SubmitExpectedResultHandler.type);
29
+ this.action = (responseType) => {
30
+ const stateMachine = HostStateMachine_1.HostStateMachine.get(this.appObjects);
31
+ if (!stateMachine) {
32
+ this.error("Unable to get HostStateMachine");
33
+ return;
34
+ }
35
+ const activeStateId = stateMachine.activeState;
36
+ if (!activeStateId) {
37
+ this.warn("No active state to set expected response on");
38
+ return;
39
+ }
40
+ const stateEntity = stateMachine.getStateByID(activeStateId);
41
+ if (!stateEntity) {
42
+ this.error(`Unable to get state entity for ID: ${activeStateId}`);
43
+ return;
44
+ }
45
+ stateEntity.expectedResponse = responseType;
46
+ };
47
+ this.handleRequest = (version, payload) => {
48
+ if (version === 1) {
49
+ const { responseType } = this.castPayloadV1(payload);
50
+ this.action(responseType);
51
+ }
52
+ else {
53
+ throw new Entities_1.UnsupportedRequestVersion(this.requestType, version);
54
+ }
55
+ };
56
+ const hostHandler = Entities_1.HostHandlerEntity.get(appObject);
57
+ if (!hostHandler) {
58
+ this.error("UC added to an entity that does not have HostHandlerEntity");
59
+ return;
60
+ }
61
+ hostHandler.registerRequestHandler(this);
62
+ }
63
+ }
64
+ //# sourceMappingURL=SubmitExpectedResultHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SubmitExpectedResultHandler.js","sourceRoot":"","sources":["../../../../src/Handler/UCs/SubmitExpectedResultHandler.ts"],"names":[],"mappings":";;;AAyBA,0EAIC;AA7BD,sCAAqD;AACrD,0CAMqB;AACrB,mFAAgF;AAKhF,MAAsB,2BACpB,SAAQ,kBAAW;IADrB;;QAMW,gBAAW,GAAG,wBAAwB,CAAC;IAIlD,CAAC;;AAVD,kEAUC;AANiB,gCAAI,GAAG,6BAA6B,AAAhC,CAAiC;AAQvD,SAAgB,+BAA+B,CAC7C,SAAoB;IAEpB,OAAO,IAAI,8BAA8B,CAAC,SAAS,CAAC,CAAC;AACvD,CAAC;AAED,MAAM,8BAA+B,SAAQ,2BAA2B;IAgC9D,aAAa,CAAC,OAAgB;QACpC,MAAM,WAAW,GAAG,OAAqB,CAAC;QAC1C,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;YAC9B,MAAM,IAAI,+BAAoB,CAC5B,IAAI,CAAC,WAAW,EAChB,CAAC,EACD,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CACxB,CAAC;QACJ,CAAC;QAED,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,2BAA2B,CAAC,IAAI,CAAC,CAAC;QA7CrD,WAAM,GAA+B,CAAC,YAAoB,EAAE,EAAE;YAC5D,MAAM,YAAY,GAAG,mCAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC3D,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClB,IAAI,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;gBAC7C,OAAO;YACT,CAAC;YAED,MAAM,aAAa,GAAG,YAAY,CAAC,WAAW,CAAC;YAC/C,IAAI,CAAC,aAAa,EAAE,CAAC;gBACnB,IAAI,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;gBACzD,OAAO;YACT,CAAC;YAED,MAAM,WAAW,GAAG,YAAY,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;YAC7D,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,IAAI,CAAC,KAAK,CAAC,sCAAsC,aAAa,EAAE,CAAC,CAAC;gBAClE,OAAO;YACT,CAAC;YAED,WAAW,CAAC,gBAAgB,GAAG,YAAiC,CAAC;QACnE,CAAC,CAAC;QAEF,kBAAa,GAAG,CAAC,OAAe,EAAE,OAAgB,EAAE,EAAE;YACpD,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC;gBAClB,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;gBACrD,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YAC5B,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,oCAAyB,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YACjE,CAAC;QACH,CAAC,CAAC;QAkBA,MAAM,WAAW,GAAG,4BAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACrD,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,IAAI,CAAC,KAAK,CAAC,4DAA4D,CAAC,CAAC;YACzE,OAAO;QACT,CAAC;QAED,WAAW,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;CACF","sourcesContent":["import { AppObject, AppObjectUC } from \"@vived/core\";\r\nimport {\r\n ActionNotImplemented,\r\n HostHandlerEntity,\r\n RequestHandler,\r\n UnableToParsePayload,\r\n UnsupportedRequestVersion\r\n} from \"../Entities\";\r\nimport { HostStateMachine } from \"../../StateMachine/Entities/HostStateMachine\";\r\nimport { ChallengeResponse } from \"../../StateMachine/Entities/HostStateEntity\";\r\n\r\nexport type SubmitExpectedResultAction = (responseType: string) => void;\r\n\r\nexport abstract class SubmitExpectedResultHandler\r\n extends AppObjectUC\r\n implements RequestHandler\r\n{\r\n static readonly type = \"SubmitExpectedResultHandler\";\r\n\r\n readonly requestType = \"SUBMIT_EXPECTED_RESULT\";\r\n\r\n abstract action: SubmitExpectedResultAction;\r\n abstract handleRequest: (version: number, payload?: unknown) => void;\r\n}\r\n\r\nexport function makeSubmitExpectedResultHandler(\r\n appObject: AppObject\r\n): SubmitExpectedResultHandler {\r\n return new SubmitExpectedResultHandlerImp(appObject);\r\n}\r\n\r\nclass SubmitExpectedResultHandlerImp extends SubmitExpectedResultHandler {\r\n action: SubmitExpectedResultAction = (responseType: string) => {\r\n const stateMachine = HostStateMachine.get(this.appObjects);\r\n if (!stateMachine) {\r\n this.error(\"Unable to get HostStateMachine\");\r\n return;\r\n }\r\n\r\n const activeStateId = stateMachine.activeState;\r\n if (!activeStateId) {\r\n this.warn(\"No active state to set expected response on\");\r\n return;\r\n }\r\n\r\n const stateEntity = stateMachine.getStateByID(activeStateId);\r\n if (!stateEntity) {\r\n this.error(`Unable to get state entity for ID: ${activeStateId}`);\r\n return;\r\n }\r\n\r\n stateEntity.expectedResponse = responseType as ChallengeResponse;\r\n };\r\n\r\n handleRequest = (version: number, payload: unknown) => {\r\n if (version === 1) {\r\n const { responseType } = this.castPayloadV1(payload);\r\n this.action(responseType);\r\n } else {\r\n throw new UnsupportedRequestVersion(this.requestType, version);\r\n }\r\n };\r\n\r\n private castPayloadV1(payload: unknown): Payload_V1 {\r\n const castPayload = payload as Payload_V1;\r\n if (!castPayload.responseType) {\r\n throw new UnableToParsePayload(\r\n this.requestType,\r\n 1,\r\n JSON.stringify(payload)\r\n );\r\n }\r\n\r\n return castPayload;\r\n }\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, SubmitExpectedResultHandler.type);\r\n\r\n const hostHandler = HostHandlerEntity.get(appObject);\r\n if (!hostHandler) {\r\n this.error(\"UC added to an entity that does not have HostHandlerEntity\");\r\n return;\r\n }\r\n\r\n hostHandler.registerRequestHandler(this);\r\n }\r\n}\r\n\r\ntype Payload_V1 = {\r\n responseType: string;\r\n};\r\n"]}
@@ -41,6 +41,7 @@ __exportStar(require("./ShowSpinnerHandler"), exports);
41
41
  __exportStar(require("./StartZSpaceHandler"), exports);
42
42
  __exportStar(require("./StopZSpaceHandler"), exports);
43
43
  __exportStar(require("./SubmitActivityAssetHandler"), exports);
44
+ __exportStar(require("./SubmitExpectedResultHandler"), exports);
44
45
  __exportStar(require("./SubmitLogHandler"), exports);
45
46
  __exportStar(require("./SubmitResultHandler"), exports);
46
47
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/Handler/UCs/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qDAAmC;AACnC,2DAAyC;AACzC,2DAAyC;AACzC,6DAA2C;AAC3C,wDAAsC;AACtC,6DAA2C;AAC3C,2DAAyC;AACzC,yDAAuC;AACvC,6DAA2C;AAC3C,wDAAsC;AACtC,4DAA0C;AAC1C,0DAAwC;AACxC,6DAA2C;AAC3C,4DAA0C;AAC1C,wDAAsC;AACtC,yDAAuC;AACvC,2DAAyC;AACzC,uEAAqD;AACrD,+DAA6C;AAC7C,qDAAmC;AACnC,uDAAqC;AACrC,8DAA4C;AAC5C,2DAAyC;AACzC,uDAAqC;AACrC,uDAAqC;AACrC,sDAAoC;AACpC,+DAA6C;AAC7C,qDAAmC;AACnC,wDAAsC","sourcesContent":["export * from \"./CallbackAssetDTO\";\r\nexport * from \"./CloseAssetSystemPlugin\";\r\nexport * from \"./GetAssetBlobURLHandler\";\r\nexport * from \"./GetAssetFolderURLHandler\";\r\nexport * from \"./GetAssetMetaHandler\";\r\nexport * from \"./GetAssetsForOwnerHandler\";\r\nexport * from \"./GetLinkedAssetsHandler\";\r\nexport * from \"./GoToNextStateHandler\";\r\nexport * from \"./GoToPreviousStateHandler\";\r\nexport * from \"./HasNextStateHandler\";\r\nexport * from \"./HasPreviousStateHandler\";\r\nexport * from \"./IsAssetFetchedHandler\";\r\nexport * from \"./IsZSpaceAvailableHandler\";\r\nexport * from \"./NewActivityAssetHandler\";\r\nexport * from \"./OnAppIsReadyHandler\";\r\nexport * from \"./OnStateChangeHandler\";\r\nexport * from \"./OnStateCompleteHandler\";\r\nexport * from \"./RegisterExternalStyleSheetsHandler\";\r\nexport * from \"./RestoreCurrentStateHandler\";\r\nexport * from \"./ShowAlertHandler\";\r\nexport * from \"./ShowConfirmHandler\";\r\nexport * from \"./ShowMarkDownEditorHandler\";\r\nexport * from \"./ShowSelectModelHandler\";\r\nexport * from \"./ShowSpinnerHandler\";\r\nexport * from \"./StartZSpaceHandler\";\r\nexport * from \"./StopZSpaceHandler\";\r\nexport * from \"./SubmitActivityAssetHandler\";\r\nexport * from \"./SubmitLogHandler\";\r\nexport * from \"./SubmitResultHandler\";\r\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/Handler/UCs/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qDAAmC;AACnC,2DAAyC;AACzC,2DAAyC;AACzC,6DAA2C;AAC3C,wDAAsC;AACtC,6DAA2C;AAC3C,2DAAyC;AACzC,yDAAuC;AACvC,6DAA2C;AAC3C,wDAAsC;AACtC,4DAA0C;AAC1C,0DAAwC;AACxC,6DAA2C;AAC3C,4DAA0C;AAC1C,wDAAsC;AACtC,yDAAuC;AACvC,2DAAyC;AACzC,uEAAqD;AACrD,+DAA6C;AAC7C,qDAAmC;AACnC,uDAAqC;AACrC,8DAA4C;AAC5C,2DAAyC;AACzC,uDAAqC;AACrC,uDAAqC;AACrC,sDAAoC;AACpC,+DAA6C;AAC7C,gEAA8C;AAC9C,qDAAmC;AACnC,wDAAsC","sourcesContent":["export * from \"./CallbackAssetDTO\";\r\nexport * from \"./CloseAssetSystemPlugin\";\r\nexport * from \"./GetAssetBlobURLHandler\";\r\nexport * from \"./GetAssetFolderURLHandler\";\r\nexport * from \"./GetAssetMetaHandler\";\r\nexport * from \"./GetAssetsForOwnerHandler\";\r\nexport * from \"./GetLinkedAssetsHandler\";\r\nexport * from \"./GoToNextStateHandler\";\r\nexport * from \"./GoToPreviousStateHandler\";\r\nexport * from \"./HasNextStateHandler\";\r\nexport * from \"./HasPreviousStateHandler\";\r\nexport * from \"./IsAssetFetchedHandler\";\r\nexport * from \"./IsZSpaceAvailableHandler\";\r\nexport * from \"./NewActivityAssetHandler\";\r\nexport * from \"./OnAppIsReadyHandler\";\r\nexport * from \"./OnStateChangeHandler\";\r\nexport * from \"./OnStateCompleteHandler\";\r\nexport * from \"./RegisterExternalStyleSheetsHandler\";\r\nexport * from \"./RestoreCurrentStateHandler\";\r\nexport * from \"./ShowAlertHandler\";\r\nexport * from \"./ShowConfirmHandler\";\r\nexport * from \"./ShowMarkDownEditorHandler\";\r\nexport * from \"./ShowSelectModelHandler\";\r\nexport * from \"./ShowSpinnerHandler\";\r\nexport * from \"./StartZSpaceHandler\";\r\nexport * from \"./StopZSpaceHandler\";\r\nexport * from \"./SubmitActivityAssetHandler\";\r\nexport * from \"./SubmitExpectedResultHandler\";\r\nexport * from \"./SubmitLogHandler\";\r\nexport * from \"./SubmitResultHandler\";\r\n"]}
@@ -107,7 +107,7 @@ class ChallengeResultsImp extends ChallengeResultsEntity {
107
107
  }
108
108
  case "PROGRESS": {
109
109
  const progressData = result.resultData;
110
- return progressData.maxProgress;
110
+ return progressData.maxProgress / 100;
111
111
  }
112
112
  default:
113
113
  return 0;
@@ -1 +1 @@
1
- {"version":3,"file":"ChallengeResults.js","sourceRoot":"","sources":["../../../../src/ChallengeResults/Entities/ChallengeResults.ts"],"names":[],"mappings":"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","sourcesContent":["import {\r\n getSingletonComponent,\r\n AppObject,\r\n AppObjectEntity,\r\n AppObjectRepo\r\n} from \"@vived/core\";\r\n\r\nexport type ChallengeResultType =\r\n | \"HIT\"\r\n | \"MULTIHIT\"\r\n | \"QUALITY\"\r\n | \"SCORE\"\r\n | \"PROGRESS\";\r\n\r\nexport interface ChallengeResult {\r\n slideID: string;\r\n tries: number;\r\n message: string;\r\n type: ChallengeResultType;\r\n resultData:\r\n | ChallengeResultHitData\r\n | ChallengeResultMultiHitData\r\n | ChallengeResultQualityData\r\n | ChallengeResultScoreData\r\n | ChallengeResultProgressData;\r\n}\r\n\r\nexport interface ChallengeResultHitData {\r\n success: boolean;\r\n}\r\n\r\nexport interface ChallengeResultProgressData {\r\n maxProgress: number;\r\n}\r\n\r\nexport interface ChallengeResultMultiHitData {\r\n hits: number;\r\n misses: number;\r\n unanswered: number;\r\n}\r\n\r\nexport interface ChallengeResultQualityData {\r\n stars: number;\r\n maxStars: number;\r\n}\r\n\r\nexport interface ChallengeResultScoreData {\r\n score: number;\r\n maxScore: number;\r\n}\r\n\r\nexport abstract class ChallengeResultsEntity extends AppObjectEntity {\r\n static type = \"ChallengeResultsEntity\";\r\n\r\n abstract get results(): ChallengeResult[];\r\n abstract submitHitResult: (\r\n slideID: string,\r\n success: boolean,\r\n tries: number,\r\n message: string\r\n ) => void;\r\n\r\n abstract submitMultiHitResult: (\r\n slideID: string,\r\n hits: number,\r\n misses: number,\r\n unanswered: number,\r\n tries: number,\r\n message: string\r\n ) => void;\r\n\r\n abstract submitQualityResult: (\r\n slideID: string,\r\n stars: number,\r\n maxStars: number,\r\n tries: number,\r\n message: string\r\n ) => void;\r\n\r\n abstract submitScoreResult: (\r\n slideID: string,\r\n score: number,\r\n maxScore: number,\r\n tries: number,\r\n message: string\r\n ) => void;\r\n\r\n abstract submitProgressResult: (\r\n slideID: string,\r\n maxProgress: number,\r\n message: string\r\n ) => void;\r\n\r\n abstract getResultForSlide: (slideID: string) => ChallengeResult | undefined;\r\n\r\n abstract getScoreForSlide: (slideID: string) => number;\r\n\r\n static get(appObjects: AppObjectRepo) {\r\n return getSingletonComponent<ChallengeResultsEntity>(\r\n ChallengeResultsEntity.type,\r\n appObjects\r\n );\r\n }\r\n}\r\n\r\nexport function makeChallengeResults(\r\n appObject: AppObject\r\n): ChallengeResultsEntity {\r\n return new ChallengeResultsImp(appObject);\r\n}\r\n\r\nclass ChallengeResultsImp extends ChallengeResultsEntity {\r\n private resultLookup = new Map<string, ChallengeResult>();\r\n\r\n get results(): ChallengeResult[] {\r\n return Array.from(this.resultLookup.values());\r\n }\r\n\r\n submitHitResult = (\r\n slideID: string,\r\n success: boolean,\r\n tries: number,\r\n message: string\r\n ): void => {\r\n const resultData: ChallengeResultHitData = {\r\n success\r\n };\r\n const result: ChallengeResult = {\r\n slideID,\r\n message,\r\n resultData,\r\n tries,\r\n type: \"HIT\"\r\n };\r\n\r\n this.resultLookup.set(slideID, result);\r\n this.notifyOnChange();\r\n };\r\n\r\n submitMultiHitResult = (\r\n slideID: string,\r\n hits: number,\r\n misses: number,\r\n unanswered: number,\r\n tries: number,\r\n message: string\r\n ): void => {\r\n const resultData: ChallengeResultMultiHitData = {\r\n hits,\r\n misses,\r\n unanswered\r\n };\r\n const result: ChallengeResult = {\r\n slideID,\r\n message,\r\n resultData,\r\n tries,\r\n type: \"MULTIHIT\"\r\n };\r\n\r\n this.resultLookup.set(slideID, result);\r\n this.notifyOnChange();\r\n };\r\n\r\n submitQualityResult = (\r\n slideID: string,\r\n stars: number,\r\n maxStars: number,\r\n tries: number,\r\n message: string\r\n ): void => {\r\n const resultData: ChallengeResultQualityData = {\r\n stars,\r\n maxStars\r\n };\r\n const result: ChallengeResult = {\r\n slideID,\r\n message,\r\n resultData,\r\n tries,\r\n type: \"QUALITY\"\r\n };\r\n\r\n this.resultLookup.set(slideID, result);\r\n this.notifyOnChange();\r\n };\r\n\r\n submitScoreResult = (\r\n slideID: string,\r\n score: number,\r\n maxScore: number,\r\n tries: number,\r\n message: string\r\n ): void => {\r\n const resultData: ChallengeResultScoreData = {\r\n score,\r\n maxScore\r\n };\r\n const result: ChallengeResult = {\r\n slideID,\r\n message,\r\n resultData,\r\n tries,\r\n type: \"SCORE\"\r\n };\r\n\r\n this.resultLookup.set(slideID, result);\r\n this.notifyOnChange();\r\n };\r\n\r\n getResultForSlide = (slideID: string): ChallengeResult | undefined => {\r\n return this.resultLookup.get(slideID);\r\n };\r\n\r\n getScoreForSlide = (slideID: string): number => {\r\n const result = this.getResultForSlide(slideID);\r\n if (!result) {\r\n return 0;\r\n }\r\n\r\n switch (result.type) {\r\n case \"HIT\": {\r\n const hitData = result.resultData as ChallengeResultHitData;\r\n return hitData.success ? 1 : 0;\r\n }\r\n case \"MULTIHIT\": {\r\n const multiHitData = result.resultData as ChallengeResultMultiHitData;\r\n const total = multiHitData.hits + multiHitData.unanswered;\r\n return total > 0 ? multiHitData.hits / total : 0;\r\n }\r\n case \"QUALITY\": {\r\n const qualityData = result.resultData as ChallengeResultQualityData;\r\n return qualityData.maxStars > 0\r\n ? qualityData.stars / qualityData.maxStars\r\n : 0;\r\n }\r\n case \"SCORE\": {\r\n const scoreData = result.resultData as ChallengeResultScoreData;\r\n return scoreData.maxScore > 0\r\n ? scoreData.score / scoreData.maxScore\r\n : 0;\r\n }\r\n case \"PROGRESS\": {\r\n const progressData = result.resultData as ChallengeResultProgressData;\r\n return progressData.maxProgress;\r\n }\r\n default:\r\n return 0;\r\n }\r\n };\r\n\r\n submitProgressResult = (\r\n slideID: string,\r\n maxProgress: number,\r\n message: string\r\n ): void => {\r\n const currentResult = this.getResultForSlide(slideID);\r\n if (\r\n currentResult &&\r\n (currentResult.resultData as ChallengeResultProgressData).maxProgress >\r\n maxProgress\r\n ) {\r\n return;\r\n }\r\n\r\n const resultData: ChallengeResultProgressData = {\r\n maxProgress\r\n };\r\n const result: ChallengeResult = {\r\n slideID,\r\n message,\r\n resultData,\r\n tries: 1,\r\n type: \"PROGRESS\"\r\n };\r\n\r\n this.resultLookup.set(slideID, result);\r\n this.notifyOnChange();\r\n };\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, ChallengeResultsEntity.type);\r\n this.appObjects.registerSingleton(this);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"ChallengeResults.js","sourceRoot":"","sources":["../../../../src/ChallengeResults/Entities/ChallengeResults.ts"],"names":[],"mappings":"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","sourcesContent":["import {\r\n getSingletonComponent,\r\n AppObject,\r\n AppObjectEntity,\r\n AppObjectRepo\r\n} from \"@vived/core\";\r\n\r\nexport type ChallengeResultType =\r\n | \"HIT\"\r\n | \"MULTIHIT\"\r\n | \"QUALITY\"\r\n | \"SCORE\"\r\n | \"PROGRESS\";\r\n\r\nexport interface ChallengeResult {\r\n slideID: string;\r\n tries: number;\r\n message: string;\r\n type: ChallengeResultType;\r\n resultData:\r\n | ChallengeResultHitData\r\n | ChallengeResultMultiHitData\r\n | ChallengeResultQualityData\r\n | ChallengeResultScoreData\r\n | ChallengeResultProgressData;\r\n}\r\n\r\nexport interface ChallengeResultHitData {\r\n success: boolean;\r\n}\r\n\r\nexport interface ChallengeResultProgressData {\r\n maxProgress: number;\r\n}\r\n\r\nexport interface ChallengeResultMultiHitData {\r\n hits: number;\r\n misses: number;\r\n unanswered: number;\r\n}\r\n\r\nexport interface ChallengeResultQualityData {\r\n stars: number;\r\n maxStars: number;\r\n}\r\n\r\nexport interface ChallengeResultScoreData {\r\n score: number;\r\n maxScore: number;\r\n}\r\n\r\nexport abstract class ChallengeResultsEntity extends AppObjectEntity {\r\n static type = \"ChallengeResultsEntity\";\r\n\r\n abstract get results(): ChallengeResult[];\r\n abstract submitHitResult: (\r\n slideID: string,\r\n success: boolean,\r\n tries: number,\r\n message: string\r\n ) => void;\r\n\r\n abstract submitMultiHitResult: (\r\n slideID: string,\r\n hits: number,\r\n misses: number,\r\n unanswered: number,\r\n tries: number,\r\n message: string\r\n ) => void;\r\n\r\n abstract submitQualityResult: (\r\n slideID: string,\r\n stars: number,\r\n maxStars: number,\r\n tries: number,\r\n message: string\r\n ) => void;\r\n\r\n abstract submitScoreResult: (\r\n slideID: string,\r\n score: number,\r\n maxScore: number,\r\n tries: number,\r\n message: string\r\n ) => void;\r\n\r\n abstract submitProgressResult: (\r\n slideID: string,\r\n maxProgress: number,\r\n message: string\r\n ) => void;\r\n\r\n abstract getResultForSlide: (slideID: string) => ChallengeResult | undefined;\r\n\r\n abstract getScoreForSlide: (slideID: string) => number;\r\n\r\n static get(appObjects: AppObjectRepo) {\r\n return getSingletonComponent<ChallengeResultsEntity>(\r\n ChallengeResultsEntity.type,\r\n appObjects\r\n );\r\n }\r\n}\r\n\r\nexport function makeChallengeResults(\r\n appObject: AppObject\r\n): ChallengeResultsEntity {\r\n return new ChallengeResultsImp(appObject);\r\n}\r\n\r\nclass ChallengeResultsImp extends ChallengeResultsEntity {\r\n private resultLookup = new Map<string, ChallengeResult>();\r\n\r\n get results(): ChallengeResult[] {\r\n return Array.from(this.resultLookup.values());\r\n }\r\n\r\n submitHitResult = (\r\n slideID: string,\r\n success: boolean,\r\n tries: number,\r\n message: string\r\n ): void => {\r\n const resultData: ChallengeResultHitData = {\r\n success\r\n };\r\n const result: ChallengeResult = {\r\n slideID,\r\n message,\r\n resultData,\r\n tries,\r\n type: \"HIT\"\r\n };\r\n\r\n this.resultLookup.set(slideID, result);\r\n this.notifyOnChange();\r\n };\r\n\r\n submitMultiHitResult = (\r\n slideID: string,\r\n hits: number,\r\n misses: number,\r\n unanswered: number,\r\n tries: number,\r\n message: string\r\n ): void => {\r\n const resultData: ChallengeResultMultiHitData = {\r\n hits,\r\n misses,\r\n unanswered\r\n };\r\n const result: ChallengeResult = {\r\n slideID,\r\n message,\r\n resultData,\r\n tries,\r\n type: \"MULTIHIT\"\r\n };\r\n\r\n this.resultLookup.set(slideID, result);\r\n this.notifyOnChange();\r\n };\r\n\r\n submitQualityResult = (\r\n slideID: string,\r\n stars: number,\r\n maxStars: number,\r\n tries: number,\r\n message: string\r\n ): void => {\r\n const resultData: ChallengeResultQualityData = {\r\n stars,\r\n maxStars\r\n };\r\n const result: ChallengeResult = {\r\n slideID,\r\n message,\r\n resultData,\r\n tries,\r\n type: \"QUALITY\"\r\n };\r\n\r\n this.resultLookup.set(slideID, result);\r\n this.notifyOnChange();\r\n };\r\n\r\n submitScoreResult = (\r\n slideID: string,\r\n score: number,\r\n maxScore: number,\r\n tries: number,\r\n message: string\r\n ): void => {\r\n const resultData: ChallengeResultScoreData = {\r\n score,\r\n maxScore\r\n };\r\n const result: ChallengeResult = {\r\n slideID,\r\n message,\r\n resultData,\r\n tries,\r\n type: \"SCORE\"\r\n };\r\n\r\n this.resultLookup.set(slideID, result);\r\n this.notifyOnChange();\r\n };\r\n\r\n getResultForSlide = (slideID: string): ChallengeResult | undefined => {\r\n return this.resultLookup.get(slideID);\r\n };\r\n\r\n getScoreForSlide = (slideID: string): number => {\r\n const result = this.getResultForSlide(slideID);\r\n if (!result) {\r\n return 0;\r\n }\r\n\r\n switch (result.type) {\r\n case \"HIT\": {\r\n const hitData = result.resultData as ChallengeResultHitData;\r\n return hitData.success ? 1 : 0;\r\n }\r\n case \"MULTIHIT\": {\r\n const multiHitData = result.resultData as ChallengeResultMultiHitData;\r\n const total = multiHitData.hits + multiHitData.unanswered;\r\n return total > 0 ? multiHitData.hits / total : 0;\r\n }\r\n case \"QUALITY\": {\r\n const qualityData = result.resultData as ChallengeResultQualityData;\r\n return qualityData.maxStars > 0\r\n ? qualityData.stars / qualityData.maxStars\r\n : 0;\r\n }\r\n case \"SCORE\": {\r\n const scoreData = result.resultData as ChallengeResultScoreData;\r\n return scoreData.maxScore > 0\r\n ? scoreData.score / scoreData.maxScore\r\n : 0;\r\n }\r\n case \"PROGRESS\": {\r\n const progressData = result.resultData as ChallengeResultProgressData;\r\n return progressData.maxProgress / 100;\r\n }\r\n default:\r\n return 0;\r\n }\r\n };\r\n\r\n submitProgressResult = (\r\n slideID: string,\r\n maxProgress: number,\r\n message: string\r\n ): void => {\r\n const currentResult = this.getResultForSlide(slideID);\r\n if (\r\n currentResult &&\r\n (currentResult.resultData as ChallengeResultProgressData).maxProgress >\r\n maxProgress\r\n ) {\r\n return;\r\n }\r\n\r\n const resultData: ChallengeResultProgressData = {\r\n maxProgress\r\n };\r\n const result: ChallengeResult = {\r\n slideID,\r\n message,\r\n resultData,\r\n tries: 1,\r\n type: \"PROGRESS\"\r\n };\r\n\r\n this.resultLookup.set(slideID, result);\r\n this.notifyOnChange();\r\n };\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, ChallengeResultsEntity.type);\r\n this.appObjects.registerSingleton(this);\r\n }\r\n}\r\n"]}
@@ -0,0 +1,59 @@
1
+ import { AppObjectUC } from "@vived/core";
2
+ import { HostHandlerEntity, UnableToParsePayload, UnsupportedRequestVersion } from "../Entities";
3
+ import { HostStateMachine } from "../../StateMachine/Entities/HostStateMachine";
4
+ export class SubmitExpectedResultHandler extends AppObjectUC {
5
+ constructor() {
6
+ super(...arguments);
7
+ this.requestType = "SUBMIT_EXPECTED_RESULT";
8
+ }
9
+ }
10
+ SubmitExpectedResultHandler.type = "SubmitExpectedResultHandler";
11
+ export function makeSubmitExpectedResultHandler(appObject) {
12
+ return new SubmitExpectedResultHandlerImp(appObject);
13
+ }
14
+ class SubmitExpectedResultHandlerImp extends SubmitExpectedResultHandler {
15
+ castPayloadV1(payload) {
16
+ const castPayload = payload;
17
+ if (!castPayload.responseType) {
18
+ throw new UnableToParsePayload(this.requestType, 1, JSON.stringify(payload));
19
+ }
20
+ return castPayload;
21
+ }
22
+ constructor(appObject) {
23
+ super(appObject, SubmitExpectedResultHandler.type);
24
+ this.action = (responseType) => {
25
+ const stateMachine = HostStateMachine.get(this.appObjects);
26
+ if (!stateMachine) {
27
+ this.error("Unable to get HostStateMachine");
28
+ return;
29
+ }
30
+ const activeStateId = stateMachine.activeState;
31
+ if (!activeStateId) {
32
+ this.warn("No active state to set expected response on");
33
+ return;
34
+ }
35
+ const stateEntity = stateMachine.getStateByID(activeStateId);
36
+ if (!stateEntity) {
37
+ this.error(`Unable to get state entity for ID: ${activeStateId}`);
38
+ return;
39
+ }
40
+ stateEntity.expectedResponse = responseType;
41
+ };
42
+ this.handleRequest = (version, payload) => {
43
+ if (version === 1) {
44
+ const { responseType } = this.castPayloadV1(payload);
45
+ this.action(responseType);
46
+ }
47
+ else {
48
+ throw new UnsupportedRequestVersion(this.requestType, version);
49
+ }
50
+ };
51
+ const hostHandler = HostHandlerEntity.get(appObject);
52
+ if (!hostHandler) {
53
+ this.error("UC added to an entity that does not have HostHandlerEntity");
54
+ return;
55
+ }
56
+ hostHandler.registerRequestHandler(this);
57
+ }
58
+ }
59
+ //# sourceMappingURL=SubmitExpectedResultHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SubmitExpectedResultHandler.js","sourceRoot":"","sources":["../../../../src/Handler/UCs/SubmitExpectedResultHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,WAAW,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAEL,iBAAiB,EAEjB,oBAAoB,EACpB,yBAAyB,EAC1B,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,gBAAgB,EAAE,MAAM,8CAA8C,CAAC;AAKhF,MAAM,OAAgB,2BACpB,SAAQ,WAAW;IADrB;;QAMW,gBAAW,GAAG,wBAAwB,CAAC;IAIlD,CAAC;;AANiB,gCAAI,GAAG,6BAA6B,AAAhC,CAAiC;AAQvD,MAAM,UAAU,+BAA+B,CAC7C,SAAoB;IAEpB,OAAO,IAAI,8BAA8B,CAAC,SAAS,CAAC,CAAC;AACvD,CAAC;AAED,MAAM,8BAA+B,SAAQ,2BAA2B;IAgC9D,aAAa,CAAC,OAAgB;QACpC,MAAM,WAAW,GAAG,OAAqB,CAAC;QAC1C,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;YAC9B,MAAM,IAAI,oBAAoB,CAC5B,IAAI,CAAC,WAAW,EAChB,CAAC,EACD,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CACxB,CAAC;QACJ,CAAC;QAED,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,2BAA2B,CAAC,IAAI,CAAC,CAAC;QA7CrD,WAAM,GAA+B,CAAC,YAAoB,EAAE,EAAE;YAC5D,MAAM,YAAY,GAAG,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC3D,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClB,IAAI,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;gBAC7C,OAAO;YACT,CAAC;YAED,MAAM,aAAa,GAAG,YAAY,CAAC,WAAW,CAAC;YAC/C,IAAI,CAAC,aAAa,EAAE,CAAC;gBACnB,IAAI,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;gBACzD,OAAO;YACT,CAAC;YAED,MAAM,WAAW,GAAG,YAAY,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;YAC7D,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,IAAI,CAAC,KAAK,CAAC,sCAAsC,aAAa,EAAE,CAAC,CAAC;gBAClE,OAAO;YACT,CAAC;YAED,WAAW,CAAC,gBAAgB,GAAG,YAAiC,CAAC;QACnE,CAAC,CAAC;QAEF,kBAAa,GAAG,CAAC,OAAe,EAAE,OAAgB,EAAE,EAAE;YACpD,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC;gBAClB,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;gBACrD,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YAC5B,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,yBAAyB,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YACjE,CAAC;QACH,CAAC,CAAC;QAkBA,MAAM,WAAW,GAAG,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACrD,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,IAAI,CAAC,KAAK,CAAC,4DAA4D,CAAC,CAAC;YACzE,OAAO;QACT,CAAC;QAED,WAAW,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;CACF","sourcesContent":["import { AppObject, AppObjectUC } from \"@vived/core\";\r\nimport {\r\n ActionNotImplemented,\r\n HostHandlerEntity,\r\n RequestHandler,\r\n UnableToParsePayload,\r\n UnsupportedRequestVersion\r\n} from \"../Entities\";\r\nimport { HostStateMachine } from \"../../StateMachine/Entities/HostStateMachine\";\r\nimport { ChallengeResponse } from \"../../StateMachine/Entities/HostStateEntity\";\r\n\r\nexport type SubmitExpectedResultAction = (responseType: string) => void;\r\n\r\nexport abstract class SubmitExpectedResultHandler\r\n extends AppObjectUC\r\n implements RequestHandler\r\n{\r\n static readonly type = \"SubmitExpectedResultHandler\";\r\n\r\n readonly requestType = \"SUBMIT_EXPECTED_RESULT\";\r\n\r\n abstract action: SubmitExpectedResultAction;\r\n abstract handleRequest: (version: number, payload?: unknown) => void;\r\n}\r\n\r\nexport function makeSubmitExpectedResultHandler(\r\n appObject: AppObject\r\n): SubmitExpectedResultHandler {\r\n return new SubmitExpectedResultHandlerImp(appObject);\r\n}\r\n\r\nclass SubmitExpectedResultHandlerImp extends SubmitExpectedResultHandler {\r\n action: SubmitExpectedResultAction = (responseType: string) => {\r\n const stateMachine = HostStateMachine.get(this.appObjects);\r\n if (!stateMachine) {\r\n this.error(\"Unable to get HostStateMachine\");\r\n return;\r\n }\r\n\r\n const activeStateId = stateMachine.activeState;\r\n if (!activeStateId) {\r\n this.warn(\"No active state to set expected response on\");\r\n return;\r\n }\r\n\r\n const stateEntity = stateMachine.getStateByID(activeStateId);\r\n if (!stateEntity) {\r\n this.error(`Unable to get state entity for ID: ${activeStateId}`);\r\n return;\r\n }\r\n\r\n stateEntity.expectedResponse = responseType as ChallengeResponse;\r\n };\r\n\r\n handleRequest = (version: number, payload: unknown) => {\r\n if (version === 1) {\r\n const { responseType } = this.castPayloadV1(payload);\r\n this.action(responseType);\r\n } else {\r\n throw new UnsupportedRequestVersion(this.requestType, version);\r\n }\r\n };\r\n\r\n private castPayloadV1(payload: unknown): Payload_V1 {\r\n const castPayload = payload as Payload_V1;\r\n if (!castPayload.responseType) {\r\n throw new UnableToParsePayload(\r\n this.requestType,\r\n 1,\r\n JSON.stringify(payload)\r\n );\r\n }\r\n\r\n return castPayload;\r\n }\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, SubmitExpectedResultHandler.type);\r\n\r\n const hostHandler = HostHandlerEntity.get(appObject);\r\n if (!hostHandler) {\r\n this.error(\"UC added to an entity that does not have HostHandlerEntity\");\r\n return;\r\n }\r\n\r\n hostHandler.registerRequestHandler(this);\r\n }\r\n}\r\n\r\ntype Payload_V1 = {\r\n responseType: string;\r\n};\r\n"]}
@@ -25,6 +25,7 @@ export * from "./ShowSpinnerHandler";
25
25
  export * from "./StartZSpaceHandler";
26
26
  export * from "./StopZSpaceHandler";
27
27
  export * from "./SubmitActivityAssetHandler";
28
+ export * from "./SubmitExpectedResultHandler";
28
29
  export * from "./SubmitLogHandler";
29
30
  export * from "./SubmitResultHandler";
30
31
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/Handler/UCs/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,sCAAsC,CAAC;AACrD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC","sourcesContent":["export * from \"./CallbackAssetDTO\";\r\nexport * from \"./CloseAssetSystemPlugin\";\r\nexport * from \"./GetAssetBlobURLHandler\";\r\nexport * from \"./GetAssetFolderURLHandler\";\r\nexport * from \"./GetAssetMetaHandler\";\r\nexport * from \"./GetAssetsForOwnerHandler\";\r\nexport * from \"./GetLinkedAssetsHandler\";\r\nexport * from \"./GoToNextStateHandler\";\r\nexport * from \"./GoToPreviousStateHandler\";\r\nexport * from \"./HasNextStateHandler\";\r\nexport * from \"./HasPreviousStateHandler\";\r\nexport * from \"./IsAssetFetchedHandler\";\r\nexport * from \"./IsZSpaceAvailableHandler\";\r\nexport * from \"./NewActivityAssetHandler\";\r\nexport * from \"./OnAppIsReadyHandler\";\r\nexport * from \"./OnStateChangeHandler\";\r\nexport * from \"./OnStateCompleteHandler\";\r\nexport * from \"./RegisterExternalStyleSheetsHandler\";\r\nexport * from \"./RestoreCurrentStateHandler\";\r\nexport * from \"./ShowAlertHandler\";\r\nexport * from \"./ShowConfirmHandler\";\r\nexport * from \"./ShowMarkDownEditorHandler\";\r\nexport * from \"./ShowSelectModelHandler\";\r\nexport * from \"./ShowSpinnerHandler\";\r\nexport * from \"./StartZSpaceHandler\";\r\nexport * from \"./StopZSpaceHandler\";\r\nexport * from \"./SubmitActivityAssetHandler\";\r\nexport * from \"./SubmitLogHandler\";\r\nexport * from \"./SubmitResultHandler\";\r\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/Handler/UCs/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,sCAAsC,CAAC;AACrD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC","sourcesContent":["export * from \"./CallbackAssetDTO\";\r\nexport * from \"./CloseAssetSystemPlugin\";\r\nexport * from \"./GetAssetBlobURLHandler\";\r\nexport * from \"./GetAssetFolderURLHandler\";\r\nexport * from \"./GetAssetMetaHandler\";\r\nexport * from \"./GetAssetsForOwnerHandler\";\r\nexport * from \"./GetLinkedAssetsHandler\";\r\nexport * from \"./GoToNextStateHandler\";\r\nexport * from \"./GoToPreviousStateHandler\";\r\nexport * from \"./HasNextStateHandler\";\r\nexport * from \"./HasPreviousStateHandler\";\r\nexport * from \"./IsAssetFetchedHandler\";\r\nexport * from \"./IsZSpaceAvailableHandler\";\r\nexport * from \"./NewActivityAssetHandler\";\r\nexport * from \"./OnAppIsReadyHandler\";\r\nexport * from \"./OnStateChangeHandler\";\r\nexport * from \"./OnStateCompleteHandler\";\r\nexport * from \"./RegisterExternalStyleSheetsHandler\";\r\nexport * from \"./RestoreCurrentStateHandler\";\r\nexport * from \"./ShowAlertHandler\";\r\nexport * from \"./ShowConfirmHandler\";\r\nexport * from \"./ShowMarkDownEditorHandler\";\r\nexport * from \"./ShowSelectModelHandler\";\r\nexport * from \"./ShowSpinnerHandler\";\r\nexport * from \"./StartZSpaceHandler\";\r\nexport * from \"./StopZSpaceHandler\";\r\nexport * from \"./SubmitActivityAssetHandler\";\r\nexport * from \"./SubmitExpectedResultHandler\";\r\nexport * from \"./SubmitLogHandler\";\r\nexport * from \"./SubmitResultHandler\";\r\n"]}
@@ -0,0 +1,11 @@
1
+ import { AppObject, AppObjectUC } from "@vived/core";
2
+ import { RequestHandler } from "../Entities";
3
+ export type SubmitExpectedResultAction = (responseType: string) => void;
4
+ export declare abstract class SubmitExpectedResultHandler extends AppObjectUC implements RequestHandler {
5
+ static readonly type = "SubmitExpectedResultHandler";
6
+ readonly requestType = "SUBMIT_EXPECTED_RESULT";
7
+ abstract action: SubmitExpectedResultAction;
8
+ abstract handleRequest: (version: number, payload?: unknown) => void;
9
+ }
10
+ export declare function makeSubmitExpectedResultHandler(appObject: AppObject): SubmitExpectedResultHandler;
11
+ //# sourceMappingURL=SubmitExpectedResultHandler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SubmitExpectedResultHandler.d.ts","sourceRoot":"","sources":["../../../../src/Handler/UCs/SubmitExpectedResultHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAGL,cAAc,EAGf,MAAM,aAAa,CAAC;AAIrB,MAAM,MAAM,0BAA0B,GAAG,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;AAExE,8BAAsB,2BACpB,SAAQ,WACR,YAAW,cAAc;IAEzB,MAAM,CAAC,QAAQ,CAAC,IAAI,iCAAiC;IAErD,QAAQ,CAAC,WAAW,4BAA4B;IAEhD,QAAQ,CAAC,MAAM,EAAE,0BAA0B,CAAC;IAC5C,QAAQ,CAAC,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;CACtE;AAED,wBAAgB,+BAA+B,CAC7C,SAAS,EAAE,SAAS,GACnB,2BAA2B,CAE7B"}
@@ -25,6 +25,7 @@ export * from "./ShowSpinnerHandler";
25
25
  export * from "./StartZSpaceHandler";
26
26
  export * from "./StopZSpaceHandler";
27
27
  export * from "./SubmitActivityAssetHandler";
28
+ export * from "./SubmitExpectedResultHandler";
28
29
  export * from "./SubmitLogHandler";
29
30
  export * from "./SubmitResultHandler";
30
31
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/Handler/UCs/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,sCAAsC,CAAC;AACrD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/Handler/UCs/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,sCAAsC,CAAC;AACrD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vived/host",
3
- "version": "4.4.1",
3
+ "version": "4.5.0",
4
4
  "description": "Public Host package for the VIVED Learning App system",
5
5
  "main": "./dist/cjs/index.js",
6
6
  "module": "./dist/esm/index.js",
@@ -61,6 +61,6 @@
61
61
  "@types/webxr": "^0.5.20"
62
62
  },
63
63
  "peerDependencies": {
64
- "@vived/core": "^1.4.3"
64
+ "@vived/core": "^1.4.5"
65
65
  }
66
66
  }