Skip to content

Commit 36f1011

Browse files
authored
Merge pull request #189 from takker99:websocket
refactor(websocket): Use `Result` from `npm:option-t`
2 parents e577c4b + 75015b8 commit 36f1011

File tree

3 files changed

+26
-27
lines changed

3 files changed

+26
-27
lines changed

browser/websocket/push.ts

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import {
55
type PageCommitError,
66
type PageCommitResponse,
77
type PinChange,
8-
type Result as SocketResult,
98
type Socket,
109
socketIO,
1110
type TimeoutError,
@@ -26,6 +25,7 @@ import {
2625
createOk,
2726
isErr,
2827
type Result,
28+
unwrapErr,
2929
unwrapOk,
3030
} from "option-t/plain_result";
3131
import type { HTTPError } from "../../rest/responseIntoResult.ts";
@@ -133,19 +133,20 @@ export const push = async (
133133
const result = (await request("socket.io-request", {
134134
method: "commit",
135135
data,
136-
})) as SocketResult<
136+
})) as Result<
137137
PageCommitResponse,
138138
UnexpectedError | TimeoutError | PageCommitError
139139
>;
140140

141-
if (result.ok) {
142-
metadata.commitId = result.value.commitId;
141+
if (createOk(result)) {
142+
metadata.commitId = unwrapOk(result).commitId;
143143
// success
144144
return createOk(metadata.commitId);
145145
}
146-
const name = result.value.name;
146+
const error = unwrapErr(result);
147+
const name = error.name;
147148
if (name === "UnexpectedError") {
148-
return createErr({ name, message: JSON.stringify(result.value) });
149+
return createErr({ name, message: JSON.stringify(error) });
149150
}
150151
if (name === "TimeoutError" || name === "SocketIOError") {
151152
await delay(3000);

browser/websocket/websocket-types.ts

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -152,10 +152,6 @@ const pageCommitErrorNames = [
152152
"NotFastForwardError",
153153
];
154154

155-
export type Result<T, E = unknown> =
156-
| { ok: true; value: T }
157-
| { ok: false; value: E };
158-
159155
export interface EventMap {
160156
"socket.io-request": (
161157
req: { method: "commit"; data: PageCommit } | {

browser/websocket/wrap.ts

Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1+
import { createErr, createOk, type Result } from "option-t/plain_result";
12
import type { Socket } from "./socket-io.ts";
23
import {
34
type DataOf,
45
type EventMap,
56
type FailedResOf,
67
isPageCommitError,
78
type ListenEventMap,
8-
type Result,
99
type SuccessResOf,
1010
type TimeoutError,
1111
type UnexpectedError,
@@ -62,25 +62,23 @@ export const wrap = (
6262
typeof response.error.name === "string" &&
6363
isPageCommitError({ name: response.error.name })
6464
) {
65-
resolve({ ok: false, value: response.error });
65+
resolve(createErr(response.error));
6666
} else {
67-
resolve({
68-
ok: false,
69-
value: { name: "UnexpectedError", value: response.error },
70-
});
67+
resolve(
68+
createErr(unexpectedError(response.error)),
69+
);
7170
}
7271
} else if ("data" in response) {
73-
resolve({ ok: true, value: response.data });
72+
resolve(createOk(response.data));
7473
}
7574
break;
7675
case "cursor":
7776
if ("error" in response) {
78-
resolve({
79-
ok: false,
80-
value: { name: "UnexpectedError", value: response.error },
81-
});
77+
resolve(
78+
createErr(unexpectedError(response.error)),
79+
);
8280
} else if ("data" in response) {
83-
resolve({ ok: true, value: response.data });
81+
resolve(createOk(response.data));
8482
}
8583
break;
8684
}
@@ -93,13 +91,12 @@ export const wrap = (
9391
);
9492
id = setTimeout(() => {
9593
socket.off("disconnect", onDisconnect);
96-
resolve({
97-
ok: false,
98-
value: {
94+
resolve(
95+
createErr({
9996
name: "TimeoutError",
10097
message: `Timeout: exceeded ${timeout}ms`,
101-
},
102-
});
98+
}),
99+
);
103100
}, timeout);
104101
socket.once("disconnect", onDisconnect);
105102
});
@@ -135,3 +132,8 @@ export const wrap = (
135132

136133
return { request, response };
137134
};
135+
136+
const unexpectedError = (value: unknown): UnexpectedError => ({
137+
name: "UnexpectedError",
138+
value,
139+
});

0 commit comments

Comments
 (0)