@elice/material-exercise 1.250521.0 → 1.250529.1
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/cjs/components/material-exercise/context/index.js +2 -1
- package/cjs/components/material-exercise/context/recoil.d.ts +4 -4
- package/cjs/components/material-exercise/context/recoil.js +32 -30
- package/cjs/components/material-exercise/context/subjects.d.ts +5 -0
- package/cjs/components/material-exercise/context/subjects.js +5 -0
- package/cjs/components/material-exercise/context/types.d.ts +5 -1
- package/cjs/components/material-exercise/exercise-file-editor/ExerciseFileEditor.js +32 -1
- package/cjs/components/material-exercise/exercise-runner/ExerciseRunner.js +36 -4
- package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerButtonGroup.js +1 -1
- package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerStatusMessage.js +30 -11
- package/cjs/components/material-exercise/exercise-runner/locales/en.json.js +1 -1
- package/cjs/components/material-exercise/exercise-runner/locales/ja.json.js +1 -1
- package/cjs/components/material-exercise/exercise-runner/locales/ko.json.js +1 -1
- package/cjs/components/material-exercise/exercise-runner/locales/th.json.js +1 -1
- package/cjs/hooks/useRunnerRoomWebSocket.js +1 -2
- package/cjs/hooks/useStdioWebSocket.js +2 -3
- package/cjs/hooks/useUsercodeEditWebSocket.d.ts +9 -1
- package/cjs/hooks/useUsercodeEditWebSocket.js +10 -2
- package/cjs/utils/async.d.ts +4 -0
- package/cjs/utils/async.js +15 -0
- package/cjs/utils/index.d.ts +1 -0
- package/cjs/utils/index.js +2 -0
- package/es/components/material-exercise/context/index.js +2 -2
- package/es/components/material-exercise/context/recoil.d.ts +4 -4
- package/es/components/material-exercise/context/recoil.js +32 -30
- package/es/components/material-exercise/context/subjects.d.ts +5 -0
- package/es/components/material-exercise/context/subjects.js +5 -1
- package/es/components/material-exercise/context/types.d.ts +5 -1
- package/es/components/material-exercise/exercise-file-editor/ExerciseFileEditor.js +33 -2
- package/es/components/material-exercise/exercise-runner/ExerciseRunner.js +37 -5
- package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerButtonGroup.js +2 -2
- package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerStatusMessage.js +33 -14
- package/es/components/material-exercise/exercise-runner/locales/en.json.js +1 -1
- package/es/components/material-exercise/exercise-runner/locales/ja.json.js +1 -1
- package/es/components/material-exercise/exercise-runner/locales/ko.json.js +1 -1
- package/es/components/material-exercise/exercise-runner/locales/th.json.js +1 -1
- package/es/hooks/useRunnerRoomWebSocket.js +1 -2
- package/es/hooks/useStdioWebSocket.js +2 -3
- package/es/hooks/useUsercodeEditWebSocket.d.ts +9 -1
- package/es/hooks/useUsercodeEditWebSocket.js +10 -2
- package/es/utils/async.d.ts +4 -0
- package/es/utils/async.js +13 -0
- package/es/utils/index.d.ts +1 -0
- package/es/utils/index.js +1 -0
- package/package.json +3 -3
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { WebsocketUsercodeMessageWriteSucceed as WSUsercodeMessageWriteSucceed } from '@elice/types';
|
|
1
2
|
import type { TextOp } from 'ot-text-unicode';
|
|
2
3
|
interface CursorRange {
|
|
3
4
|
from: number;
|
|
@@ -17,6 +18,10 @@ export type UseUsercodeEditWebSocketPropOnInit = (doc: string) => void;
|
|
|
17
18
|
* Event handler for `WRITE_NOTI` event.
|
|
18
19
|
*/
|
|
19
20
|
export type UseUsercodeEditWebSocketPropOnWriteNoti = (ots: TextOp, isFromServer: boolean) => void;
|
|
21
|
+
/**
|
|
22
|
+
* Event handler for `WRITE_SUCCEED` event.
|
|
23
|
+
*/
|
|
24
|
+
export type UseUsercodeEditWebSocketPropOnWriteSucceed = (msg: WSUsercodeMessageWriteSucceed, requestId: number) => void;
|
|
20
25
|
/**
|
|
21
26
|
* Props of `useUsercodeEditWebSocket`.
|
|
22
27
|
*/
|
|
@@ -25,6 +30,7 @@ interface UseUsercodeEditWebSocketProps {
|
|
|
25
30
|
filename: string | null;
|
|
26
31
|
onInit: UseUsercodeEditWebSocketPropOnInit;
|
|
27
32
|
onWriteNoti: UseUsercodeEditWebSocketPropOnWriteNoti;
|
|
33
|
+
onWriteSucceed: UseUsercodeEditWebSocketPropOnWriteSucceed;
|
|
28
34
|
}
|
|
29
35
|
/**
|
|
30
36
|
*
|
|
@@ -33,7 +39,9 @@ export type UseUsercodeEditWebSocketReturnSendCursor = (range: CursorRange) => v
|
|
|
33
39
|
/**
|
|
34
40
|
* Event handler for websocket message.
|
|
35
41
|
*/
|
|
36
|
-
export type UseUsercodeEditWebSocketReturnSendOTs = (ots: TextOp) =>
|
|
42
|
+
export type UseUsercodeEditWebSocketReturnSendOTs = (ots: TextOp) => {
|
|
43
|
+
requestId: number;
|
|
44
|
+
};
|
|
37
45
|
/**
|
|
38
46
|
* Return type of `useUsercodeEditWebSocket`.
|
|
39
47
|
*/
|
|
@@ -21,7 +21,8 @@ var useUsercodeEditWebSocket = function useUsercodeEditWebSocket(_ref) {
|
|
|
21
21
|
var exerciseRoomId = _ref.exerciseRoomId,
|
|
22
22
|
filename = _ref.filename,
|
|
23
23
|
onInit = _ref.onInit,
|
|
24
|
-
onWriteNoti = _ref.onWriteNoti
|
|
24
|
+
onWriteNoti = _ref.onWriteNoti,
|
|
25
|
+
onWriteSucceed = _ref.onWriteSucceed;
|
|
25
26
|
var _return = useRef({});
|
|
26
27
|
var _useMaterialConfig = useMaterialConfig(),
|
|
27
28
|
apiWsOriginUrl = _useMaterialConfig.apiWsOriginUrl;
|
|
@@ -255,6 +256,10 @@ var useUsercodeEditWebSocket = function useUsercodeEditWebSocket(_ref) {
|
|
|
255
256
|
_doc.current = type.apply(_doc.current, ots);
|
|
256
257
|
otsBuffer.current.push(ots);
|
|
257
258
|
sendWrite();
|
|
259
|
+
return {
|
|
260
|
+
// Use next doc. version as id for matching request-response.
|
|
261
|
+
requestId: version.current + 1
|
|
262
|
+
};
|
|
258
263
|
}, [sendWrite]);
|
|
259
264
|
//
|
|
260
265
|
// =============== usercode ===============
|
|
@@ -419,6 +424,7 @@ var useUsercodeEditWebSocket = function useUsercodeEditWebSocket(_ref) {
|
|
|
419
424
|
writeIndex.current = 0;
|
|
420
425
|
writeFailCount.current = 0;
|
|
421
426
|
updateCursorFromOts(msg.ots);
|
|
427
|
+
onWriteSucceed(msg, version.current);
|
|
422
428
|
};
|
|
423
429
|
/**
|
|
424
430
|
* Websocket on `WRITE_NOTI` message.
|
|
@@ -483,7 +489,9 @@ var useUsercodeEditWebSocket = function useUsercodeEditWebSocket(_ref) {
|
|
|
483
489
|
if (!isReady) {
|
|
484
490
|
return;
|
|
485
491
|
}
|
|
486
|
-
websocket.current = new EliceWebSocket(createUsercodeUrl
|
|
492
|
+
websocket.current = new EliceWebSocket(createUsercodeUrl, undefined, {
|
|
493
|
+
maxPingQueueTolerance: 1
|
|
494
|
+
});
|
|
487
495
|
websocket.current.onopen = wsOpen;
|
|
488
496
|
websocket.current.onclose = wsClose;
|
|
489
497
|
websocket.current.onmessage = wsMessage;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Collection of utils for async. logics.
|
|
3
|
+
*/
|
|
4
|
+
function withTimeout(promise, timeout, timeoutMessage) {
|
|
5
|
+
var timeoutPromise = new Promise(function (_, reject) {
|
|
6
|
+
setTimeout(function () {
|
|
7
|
+
reject(new Error(timeoutMessage !== null && timeoutMessage !== void 0 ? timeoutMessage : "Operation timeout (".concat(timeout, "ms)")));
|
|
8
|
+
}, timeout);
|
|
9
|
+
});
|
|
10
|
+
return Promise.race([promise, timeoutPromise]);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export { withTimeout };
|
package/es/utils/index.d.ts
CHANGED
package/es/utils/index.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@elice/material-exercise",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.250529.1",
|
|
4
4
|
"description": "User view and editing components of Elice material exercise",
|
|
5
5
|
"repository": "https://git.elicer.io/elice/frontend/library/elice-material",
|
|
6
6
|
"license": "UNLICENSED",
|
|
@@ -83,8 +83,8 @@
|
|
|
83
83
|
"@elice/icons": "^1.230814.0",
|
|
84
84
|
"@elice/intl": "0.241127.0",
|
|
85
85
|
"@elice/markdown": "1.241015.0",
|
|
86
|
-
"@elice/material-shared-types": "1.
|
|
87
|
-
"@elice/material-shared-utils": "1.
|
|
86
|
+
"@elice/material-shared-types": "1.250529.1",
|
|
87
|
+
"@elice/material-shared-utils": "1.250529.1",
|
|
88
88
|
"@elice/mui-elements": "^5.250108.0-controllabel.0",
|
|
89
89
|
"@elice/mui-system": "^5.250108.0-controllabel.0",
|
|
90
90
|
"@elice/types": "1.241220.0",
|