Skip to content

Commit 9e9cfda

Browse files
authored
Merge pull request #6 from takker99:refactor
style: deno lint
2 parents 62849eb + 7e177bd commit 9e9cfda

File tree

3 files changed

+39
-29
lines changed

3 files changed

+39
-29
lines changed

mod.ts

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,17 +7,30 @@ import type { DataOf, EventMap, ListenEventMap, ResponseOf } from "./types.ts";
77
export * from "./types.ts";
88
export * from "./socket.ts";
99

10-
export function wrap(
10+
export interface SocketOperator {
11+
request: <EventName extends keyof EventMap>(
12+
event: EventName,
13+
data: DataOf<EventName>,
14+
) => Promise<
15+
EventName extends "cursor" ? void
16+
: ResponseOf<"socket.io-request">["data"]
17+
>;
18+
response: <EventName extends keyof ListenEventMap>(
19+
...events: EventName[]
20+
) => AsyncGenerator<Parameters<ListenEventMap[EventName]>[0], void, unknown>;
21+
}
22+
23+
export const wrap = (
1124
socket: Socket,
1225
timeout = 90000,
13-
) {
14-
function request<EventName extends keyof EventMap>(
26+
): SocketOperator => {
27+
const request = <EventName extends keyof EventMap>(
1528
event: EventName,
1629
data: DataOf<EventName>,
1730
): Promise<
1831
EventName extends "cursor" ? void
1932
: ResponseOf<"socket.io-request">["data"]
20-
> {
33+
> => {
2134
let id: number | undefined;
2235
type ResolveType = EventName extends "cursor" ? void
2336
: ResponseOf<"socket.io-request">["data"];
@@ -46,7 +59,7 @@ export function wrap(
4659
}, timeout);
4760
socket.once("disconnect", onDisconnect);
4861
});
49-
}
62+
};
5063

5164
async function* response<EventName extends keyof ListenEventMap>(
5265
...events: EventName[]
@@ -77,4 +90,4 @@ export function wrap(
7790
}
7891

7992
return { request, response };
80-
}
93+
};

socket.ts

Lines changed: 19 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
/// <reference no-default-lib="true" />
22
/// <reference lib="esnext" />
33
/// <reference lib="dom" />
4+
45
import type {
56
Manager,
67
ManagerOptions,
@@ -9,22 +10,7 @@ import type {
910
} from "./types/socketIO/index.ts";
1011
export type { Manager, ManagerOptions, Socket, SocketOptions };
1112

12-
type IO = (
13-
uri: string,
14-
opts?: Partial<ManagerOptions & SocketOptions>,
15-
) => Socket;
16-
17-
declare global {
18-
interface Window {
19-
io?: IO;
20-
}
21-
}
22-
const version = "4.2.0";
23-
const url =
24-
`https://cdnjs.cloudflare.com/ajax/libs/socket.io/${version}/socket.io.min.js`;
25-
let error: string | Event | undefined;
26-
27-
export async function socketIO(): Promise<Socket> {
13+
export const socketIO = async (): Promise<Socket> => {
2814
const io = await importSocketIO();
2915
const socket = io("https://scrapbox.io", {
3016
reconnectionDelay: 5000,
@@ -40,9 +26,20 @@ export async function socketIO(): Promise<Socket> {
4026
socket.once("disconnect", onDisconnect);
4127
});
4228
return socket;
43-
}
29+
};
30+
31+
type IO = (
32+
uri: string,
33+
opts?: Partial<ManagerOptions & SocketOptions>,
34+
) => Socket;
35+
declare const io: IO | undefined;
36+
const version = "4.2.0";
37+
const url =
38+
`https://cdnjs.cloudflare.com/ajax/libs/socket.io/${version}/socket.io.min.js`;
39+
let error: string | Event | undefined;
4440

45-
async function importSocketIO(): Promise<IO> {
41+
const importSocketIO = async (): Promise<IO> => {
42+
if (!error) throw error;
4643
if (!document.querySelector(`script[src="${url}"]`)) {
4744
const script = document.createElement("script");
4845
script.src = url;
@@ -56,11 +53,11 @@ async function importSocketIO(): Promise<IO> {
5653
});
5754
}
5855

59-
return new Promise((resolve, reject) => {
56+
return new Promise((resolve) => {
6057
const id = setInterval(() => {
61-
if (!window.io) return;
58+
if (!io) return;
6259
clearInterval(id);
63-
resolve(window.io);
60+
resolve(io);
6461
}, 500);
6562
});
66-
}
63+
};

types/socketIO/socket.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// deno-lint-ignore-file no-explicit-any ban-types camelcase
1+
// deno-lint-ignore-file no-explicit-any camelcase
22
// this file is copied from https://cdn.esm.sh/v54/socket.io-client@4.2.0/build/socket.d.ts
33
import { Packet } from "./parser.ts";
44
import { Manager } from "./manager.ts";

0 commit comments

Comments
 (0)