• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/// <reference types="node" />
2
3import type { Blob } from 'buffer'
4import type { MessagePort } from 'worker_threads'
5import {
6  EventTarget,
7  Event,
8  EventInit,
9  EventListenerOptions,
10  AddEventListenerOptions,
11  EventListenerOrEventListenerObject
12} from './patch'
13import Dispatcher from './dispatcher'
14import { HeadersInit } from './fetch'
15
16export type BinaryType = 'blob' | 'arraybuffer'
17
18interface WebSocketEventMap {
19  close: CloseEvent
20  error: Event
21  message: MessageEvent
22  open: Event
23}
24
25interface WebSocket extends EventTarget {
26  binaryType: BinaryType
27
28  readonly bufferedAmount: number
29  readonly extensions: string
30
31  onclose: ((this: WebSocket, ev: WebSocketEventMap['close']) => any) | null
32  onerror: ((this: WebSocket, ev: WebSocketEventMap['error']) => any) | null
33  onmessage: ((this: WebSocket, ev: WebSocketEventMap['message']) => any) | null
34  onopen: ((this: WebSocket, ev: WebSocketEventMap['open']) => any) | null
35
36  readonly protocol: string
37  readonly readyState: number
38  readonly url: string
39
40  close(code?: number, reason?: string): void
41  send(data: string | ArrayBufferLike | Blob | ArrayBufferView): void
42
43  readonly CLOSED: number
44  readonly CLOSING: number
45  readonly CONNECTING: number
46  readonly OPEN: number
47
48  addEventListener<K extends keyof WebSocketEventMap>(
49    type: K,
50    listener: (this: WebSocket, ev: WebSocketEventMap[K]) => any,
51    options?: boolean | AddEventListenerOptions
52  ): void
53  addEventListener(
54    type: string,
55    listener: EventListenerOrEventListenerObject,
56    options?: boolean | AddEventListenerOptions
57  ): void
58  removeEventListener<K extends keyof WebSocketEventMap>(
59    type: K,
60    listener: (this: WebSocket, ev: WebSocketEventMap[K]) => any,
61    options?: boolean | EventListenerOptions
62  ): void
63  removeEventListener(
64    type: string,
65    listener: EventListenerOrEventListenerObject,
66    options?: boolean | EventListenerOptions
67  ): void
68}
69
70export declare const WebSocket: {
71  prototype: WebSocket
72  new (url: string | URL, protocols?: string | string[] | WebSocketInit): WebSocket
73  readonly CLOSED: number
74  readonly CLOSING: number
75  readonly CONNECTING: number
76  readonly OPEN: number
77}
78
79interface CloseEventInit extends EventInit {
80  code?: number
81  reason?: string
82  wasClean?: boolean
83}
84
85interface CloseEvent extends Event {
86  readonly code: number
87  readonly reason: string
88  readonly wasClean: boolean
89}
90
91export declare const CloseEvent: {
92  prototype: CloseEvent
93  new (type: string, eventInitDict?: CloseEventInit): CloseEvent
94}
95
96interface MessageEventInit<T = any> extends EventInit {
97  data?: T
98  lastEventId?: string
99  origin?: string
100  ports?: (typeof MessagePort)[]
101  source?: typeof MessagePort | null
102}
103
104interface MessageEvent<T = any> extends Event {
105  readonly data: T
106  readonly lastEventId: string
107  readonly origin: string
108  readonly ports: ReadonlyArray<typeof MessagePort>
109  readonly source: typeof MessagePort | null
110  initMessageEvent(
111    type: string,
112    bubbles?: boolean,
113    cancelable?: boolean,
114    data?: any,
115    origin?: string,
116    lastEventId?: string,
117    source?: typeof MessagePort | null,
118    ports?: (typeof MessagePort)[]
119  ): void;
120}
121
122export declare const MessageEvent: {
123  prototype: MessageEvent
124  new<T>(type: string, eventInitDict?: MessageEventInit<T>): MessageEvent<T>
125}
126
127interface WebSocketInit {
128  protocols?: string | string[],
129  dispatcher?: Dispatcher,
130  headers?: HeadersInit
131}
132