@voicenter-team/events-sdk 0.0.29 → 0.0.31
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/dist/voicenter-events-sdk.cjs.js.map +1 -1
- package/dist/voicenter-events-sdk.d.ts +594 -15
- package/dist/voicenter-events-sdk.es.js.map +1 -1
- package/dist/voicenter-events-sdk.iife.js.map +1 -1
- package/dist/voicenter-events-sdk.umd.js.map +1 -1
- package/package.json +59 -56
- package/.eslintrc.cjs +0 -17
- package/.github/workflows/main.yml +0 -16
- package/.idea/VoicenterEventsSDK.iml +0 -12
- package/.idea/git_toolbox_prj.xml +0 -15
- package/.idea/inspectionProfiles/Project_Default.xml +0 -6
- package/.idea/jsLibraryMappings.xml +0 -6
- package/.idea/jsLinters/eslint.xml +0 -7
- package/.idea/modules.xml +0 -8
- package/.idea/vcs.xml +0 -6
- package/.nvmrc +0 -1
- package/TODELETE_TEMP/events.json +0 -69122
- package/TODELETE_TEMP/temphelper.cjs +0 -101
- package/docs/package-lock.json +0 -3827
- package/docs/package.json +0 -26
- package/docs/src/.vuepress/client.js +0 -8
- package/docs/src/.vuepress/components/Demo.vue +0 -303
- package/docs/src/.vuepress/config.js +0 -60
- package/docs/src/.vuepress/public/favicon.ico +0 -0
- package/docs/src/.vuepress/public/images/logo.png +0 -0
- package/docs/src/.vuepress/styles/index.scss +0 -0
- package/docs/src/.vuepress/styles/index.styl +0 -8
- package/docs/src/.vuepress/styles/palette.styl +0 -10
- package/docs/src/demo.md +0 -7
- package/docs/src/index.md +0 -4
- package/jest.config.js +0 -11
- package/src/classes/auth/auth.class.ts +0 -355
- package/src/classes/event-emitter/event-emitter.class.ts +0 -73
- package/src/classes/events-sdk/events-sdk-default-options.ts +0 -34
- package/src/classes/events-sdk/events-sdk.class.ts +0 -208
- package/src/classes/events-sdk/events-sdk.test.ts +0 -17
- package/src/classes/events-sdk/events-sdk.types.ts +0 -75
- package/src/classes/logger/logger.class.ts +0 -61
- package/src/classes/socket-io/socket-io.class.ts +0 -220
- package/src/classes/socket-io/socket-io.d.ts +0 -10
- package/src/classes/socket-io/versions/index.ts +0 -52
- package/src/classes/socket-io/versions/v1_3_7.js +0 -2083
- package/src/classes/storage/storage.class.ts +0 -51
- package/src/enum/auth.enum.ts +0 -4
- package/src/enum/logger.enum.ts +0 -5
- package/src/index.ts +0 -13
- package/src/types/auth.d.ts +0 -53
- package/src/types/events.d.ts +0 -83
- package/src/types/listeners.d.ts +0 -37
- package/src/types/public-api.d.ts +0 -39
- package/src/types/socket.d.ts +0 -5
- package/tsconfig.json +0 -47
- package/vite.config.ts +0 -45
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
import { Socket } from 'socket.io-client'
|
|
2
|
-
import { LoginType } from '@/enum/auth.enum'
|
|
3
|
-
import { LoggerOptions } from '@voicenter-team/socketio-storage-logger/dist/storage-logger'
|
|
4
|
-
|
|
5
|
-
export interface EventsSdkOptions {
|
|
6
|
-
isNewStack?: boolean,
|
|
7
|
-
servers?: Server[],
|
|
8
|
-
loginUrl: string,
|
|
9
|
-
getSettingsUrl?: string
|
|
10
|
-
fallbackServer: Server,
|
|
11
|
-
refreshTokenUrl: string,
|
|
12
|
-
refreshToken?: string,
|
|
13
|
-
token: string,
|
|
14
|
-
tokenExpiry?: Date,
|
|
15
|
-
loginType: LoginType,
|
|
16
|
-
forceNew?: boolean,
|
|
17
|
-
reconnectionDelay: number,
|
|
18
|
-
reconnectionDelayMax?: number,
|
|
19
|
-
maxReconnectAttempts: number,
|
|
20
|
-
timeout?: number,
|
|
21
|
-
keepAliveTimeout: number,
|
|
22
|
-
idleInterval?: number,
|
|
23
|
-
protocol: string,
|
|
24
|
-
transports?: string[],
|
|
25
|
-
upgrade?: boolean,
|
|
26
|
-
serverFetchStrategy?: string,
|
|
27
|
-
serverType?: number,
|
|
28
|
-
useLogger?: boolean,
|
|
29
|
-
loggerSocketConnection?: Socket,
|
|
30
|
-
loggerServer: string,
|
|
31
|
-
loggerConfig: LoggerOptions,
|
|
32
|
-
loggerConnectOptions?: LoggerConnectOptions,
|
|
33
|
-
email: string,
|
|
34
|
-
password: string,
|
|
35
|
-
username: string,
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
export interface Server {
|
|
39
|
-
Priority: number,
|
|
40
|
-
Domain: string,
|
|
41
|
-
URLID: number,
|
|
42
|
-
Version: string,
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
export interface LoggerConfig {
|
|
46
|
-
logToConsole?: boolean,
|
|
47
|
-
overloadGlobalConsole?: boolean,
|
|
48
|
-
namespace?: string,
|
|
49
|
-
socketEmitInterval?: number
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
export interface LoggerConnectOptions {
|
|
53
|
-
reconnection?: boolean,
|
|
54
|
-
reconnectionDelay?: number,
|
|
55
|
-
reconnectionAttempts?: number,
|
|
56
|
-
perMessageDeflate?: {
|
|
57
|
-
threshold: number
|
|
58
|
-
},
|
|
59
|
-
upgrade?: boolean,
|
|
60
|
-
transports?: string[],
|
|
61
|
-
debug?: boolean
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
export interface ReconnectOptions {
|
|
65
|
-
retryCount: number,
|
|
66
|
-
maxReconnectAttempts: number,
|
|
67
|
-
reconnectionDelay: number,
|
|
68
|
-
minReconnectionDelay: number,
|
|
69
|
-
maxReconnectionDelay: number
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
export enum ServerParameter {
|
|
73
|
-
MAIN = 'main',
|
|
74
|
-
NEXT = 'next'
|
|
75
|
-
}
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
import { Socket } from 'socket.io-client'
|
|
2
|
-
import EventsSdkClass from '@/classes/events-sdk/events-sdk.class'
|
|
3
|
-
import { LoggerTypeEnum } from '@/enum/logger.enum'
|
|
4
|
-
import { EventsEnum } from '@voicenter-team/real-time-events-types'
|
|
5
|
-
import StorageLogger from '@voicenter-team/socketio-storage-logger'
|
|
6
|
-
|
|
7
|
-
export class LoggerClass{
|
|
8
|
-
constructor (private readonly eventsSdkClass: EventsSdkClass) {
|
|
9
|
-
this.eventsSdkClass = eventsSdkClass
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
public io: Socket | undefined
|
|
13
|
-
private storageLogger: StorageLogger | undefined
|
|
14
|
-
|
|
15
|
-
public init () {
|
|
16
|
-
if (!this.eventsSdkClass.options.useLogger) {
|
|
17
|
-
return
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
if (this.eventsSdkClass.options.loggerSocketConnection) {
|
|
21
|
-
this.io = this.eventsSdkClass.options.loggerSocketConnection
|
|
22
|
-
} else {
|
|
23
|
-
if (this.eventsSdkClass.socketIoClass.ioFunction) {
|
|
24
|
-
this.io = this.eventsSdkClass.socketIoClass.ioFunction(
|
|
25
|
-
this.eventsSdkClass.options.loggerServer,
|
|
26
|
-
this.eventsSdkClass.options.loggerConnectOptions
|
|
27
|
-
)
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
if (this.io) {
|
|
32
|
-
this.storageLogger = new StorageLogger({
|
|
33
|
-
socket: this.io,
|
|
34
|
-
loggerOptions: this.eventsSdkClass.options.loggerConfig
|
|
35
|
-
})
|
|
36
|
-
} else {
|
|
37
|
-
this.storageLogger = new StorageLogger({
|
|
38
|
-
url: this.eventsSdkClass.options.loggerServer,
|
|
39
|
-
socketOptions: this.eventsSdkClass.options.loggerConnectOptions,
|
|
40
|
-
loggerOptions: this.eventsSdkClass.options.loggerConfig
|
|
41
|
-
})
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
public log (type: LoggerTypeEnum, event: EventsEnum | string, ...data: unknown[]) {
|
|
46
|
-
const result = [ event, ...data ]
|
|
47
|
-
if (this.storageLogger) {
|
|
48
|
-
if (type === LoggerTypeEnum.INFO) {
|
|
49
|
-
this.storageLogger.log(result)
|
|
50
|
-
} else if (type === LoggerTypeEnum.ERROR) {
|
|
51
|
-
this.storageLogger.error(result)
|
|
52
|
-
}
|
|
53
|
-
} else {
|
|
54
|
-
if (type === LoggerTypeEnum.INFO) {
|
|
55
|
-
console.log(result)
|
|
56
|
-
} else if (type === LoggerTypeEnum.ERROR) {
|
|
57
|
-
console.error(result)
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
}
|
|
@@ -1,220 +0,0 @@
|
|
|
1
|
-
import { ManagerOptions, Socket, SocketOptions } from 'socket.io-client'
|
|
2
|
-
import EventsSdkClass from '@/classes/events-sdk/events-sdk.class'
|
|
3
|
-
import sockets, { TypedSocketIo } from '@/classes/socket-io/versions'
|
|
4
|
-
import { SocketTyped } from '@/types/socket'
|
|
5
|
-
import { ServerParameter } from '@/classes/events-sdk/events-sdk.types'
|
|
6
|
-
import { EventsEnum, KeepAliveResponseEvent } from '@voicenter-team/real-time-events-types'
|
|
7
|
-
import { StorageClass } from '@/classes/storage/storage.class'
|
|
8
|
-
import { LoggerTypeEnum } from '@/enum/logger.enum'
|
|
9
|
-
// import { LoggerTypeEnum } from '@/enum/logger.enum'
|
|
10
|
-
|
|
11
|
-
export class SocketIoClass{
|
|
12
|
-
constructor (private readonly eventsSdkClass: EventsSdkClass) {
|
|
13
|
-
this.eventsSdkClass = eventsSdkClass
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
public io: SocketTyped | undefined
|
|
17
|
-
public ioFunction: TypedSocketIo | undefined
|
|
18
|
-
public lastEventTimestamp = new Date().getTime()
|
|
19
|
-
public doReconnect = true
|
|
20
|
-
private keepAliveInterval: ReturnType<typeof setInterval> | undefined
|
|
21
|
-
private keepReconnectInterval: ReturnType<typeof setInterval> | undefined
|
|
22
|
-
private connected = false
|
|
23
|
-
|
|
24
|
-
public getSocketIoFunction (Client: string) {
|
|
25
|
-
const parsedArray = Client.split('v=')
|
|
26
|
-
|
|
27
|
-
const version = 'v'
|
|
28
|
-
.concat(parsedArray[parsedArray.length - 1])
|
|
29
|
-
.replaceAll('.', '_')
|
|
30
|
-
|
|
31
|
-
this.ioFunction = sockets.getSocketVersion(version)
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
public initSocketConnection () {
|
|
35
|
-
const token = this.eventsSdkClass.authClass.token
|
|
36
|
-
|
|
37
|
-
const protocol = this.eventsSdkClass.options.protocol
|
|
38
|
-
|
|
39
|
-
const server = this.eventsSdkClass.server
|
|
40
|
-
|
|
41
|
-
try {
|
|
42
|
-
const domain = server ? server.Domain : this.eventsSdkClass.URL
|
|
43
|
-
|
|
44
|
-
const url = server ? `${protocol}://${domain}` : this.eventsSdkClass.URL
|
|
45
|
-
|
|
46
|
-
this.eventsSdkClass.loggerClass.log(
|
|
47
|
-
LoggerTypeEnum.INFO,
|
|
48
|
-
'Connecting to..',
|
|
49
|
-
url
|
|
50
|
-
)
|
|
51
|
-
|
|
52
|
-
this.eventsSdkClass.eventEmitterClass.emit(
|
|
53
|
-
EventsEnum.ONLINE_STATUS_EVENT,
|
|
54
|
-
{
|
|
55
|
-
isSocketConnected: false,
|
|
56
|
-
attemptToConnect: url
|
|
57
|
-
}
|
|
58
|
-
)
|
|
59
|
-
|
|
60
|
-
const options: Partial<ManagerOptions & SocketOptions> = {
|
|
61
|
-
reconnection: false,
|
|
62
|
-
upgrade: false,
|
|
63
|
-
transports: [ 'websocket' ],
|
|
64
|
-
forceNew: true,
|
|
65
|
-
query: {
|
|
66
|
-
token
|
|
67
|
-
},
|
|
68
|
-
timeout: this.eventsSdkClass.options.timeout
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
if (token) {
|
|
72
|
-
options.query = {
|
|
73
|
-
token
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
if (this.ioFunction && url) {
|
|
78
|
-
this.io = this.ioFunction(url, options)
|
|
79
|
-
} else {
|
|
80
|
-
throw new Error('Socket server url no defined')
|
|
81
|
-
}
|
|
82
|
-
} catch (error) {
|
|
83
|
-
this.eventsSdkClass.loggerClass.log(LoggerTypeEnum.ERROR, 'init socket connection error', error)
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
public initSocketEvents () {
|
|
88
|
-
if (this.io) {
|
|
89
|
-
this.io
|
|
90
|
-
.on(EventsEnum.LOGIN_SUCCESS, (data) => this.eventsSdkClass.eventEmitterClass.emit(EventsEnum.LOGIN_SUCCESS, data))
|
|
91
|
-
.on(EventsEnum.QUEUE_EVENT, (data) => this.eventsSdkClass.eventEmitterClass.emit(EventsEnum.QUEUE_EVENT, data))
|
|
92
|
-
.on(EventsEnum.EXTENSION_EVENT, (data) => this.eventsSdkClass.eventEmitterClass.emit(EventsEnum.EXTENSION_EVENT, data))
|
|
93
|
-
.on(EventsEnum.DIALER_EVENT, (data) => this.eventsSdkClass.eventEmitterClass.emit(EventsEnum.DIALER_EVENT, data))
|
|
94
|
-
.on(EventsEnum.LOGIN_STATUS, (data) => this.eventsSdkClass.eventEmitterClass.emit(EventsEnum.LOGIN_STATUS, data))
|
|
95
|
-
.on(EventsEnum.ALL_EXTENSION_STATUS, (data) => this.eventsSdkClass.eventEmitterClass.emit(EventsEnum.ALL_EXTENSION_STATUS, data))
|
|
96
|
-
.on(EventsEnum.ALL_DIALER_STATUS, (data) => this.eventsSdkClass.eventEmitterClass.emit(EventsEnum.ALL_DIALER_STATUS, data))
|
|
97
|
-
.on(EventsEnum.KEEP_ALIVE_RESPONSE, (data) => this.onKeepAliveResponse(data))
|
|
98
|
-
.on(EventsEnum.CONNECT, () => this.onConnect())
|
|
99
|
-
.on(EventsEnum.DISCONNECT, (data) => this.onDisconnect(data))
|
|
100
|
-
.on(EventsEnum.CONNECT_ERROR_EVENT, (data) => this.onConnectError(data))
|
|
101
|
-
.on(EventsEnum.EXTENSIONS_UPDATED, (data) => {
|
|
102
|
-
this.eventsSdkClass.eventEmitterClass.emit(EventsEnum.EXTENSIONS_UPDATED, data)
|
|
103
|
-
})
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
public clearKeepAliveInterval () {
|
|
108
|
-
if (this.keepAliveInterval) {
|
|
109
|
-
clearInterval(this.keepAliveInterval)
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
public initKeepAlive () {
|
|
114
|
-
this.clearKeepAliveInterval()
|
|
115
|
-
|
|
116
|
-
this.keepAliveInterval = setInterval(async () => {
|
|
117
|
-
const now = new Date().getTime()
|
|
118
|
-
|
|
119
|
-
// if (now > this.lastEventTimestamp + delta) {
|
|
120
|
-
// this.eventsSdkClass.connect(ServerParameter.DEFAULT, true)
|
|
121
|
-
//
|
|
122
|
-
// return
|
|
123
|
-
// }
|
|
124
|
-
//
|
|
125
|
-
// if (!this.io) {
|
|
126
|
-
// this.initSocketConnection()
|
|
127
|
-
//
|
|
128
|
-
// return
|
|
129
|
-
// }
|
|
130
|
-
|
|
131
|
-
if (now > this.lastEventTimestamp + this.eventsSdkClass.options.keepAliveTimeout && this.io) {
|
|
132
|
-
this.eventsSdkClass.emit(EventsEnum.KEEP_ALIVE, this.eventsSdkClass.authClass.token)
|
|
133
|
-
|
|
134
|
-
this.eventsSdkClass.loggerClass.log(LoggerTypeEnum.INFO, `EMIT -> ${EventsEnum.KEEP_ALIVE}`, this.eventsSdkClass.authClass.token)
|
|
135
|
-
|
|
136
|
-
return
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
}, this.eventsSdkClass.options.keepAliveTimeout)
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
public closeAllConnections () {
|
|
143
|
-
if (this.io) {
|
|
144
|
-
this.io.close()
|
|
145
|
-
|
|
146
|
-
this.io?.disconnect()
|
|
147
|
-
|
|
148
|
-
this.io = undefined
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
StorageClass.clearSessionStorage()
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
private onKeepAliveResponse (data: KeepAliveResponseEvent) {
|
|
155
|
-
this.eventsSdkClass.loggerClass.log(LoggerTypeEnum.INFO, EventsEnum.KEEP_ALIVE_RESPONSE)
|
|
156
|
-
|
|
157
|
-
if (data.errorCode) {
|
|
158
|
-
this.initSocketConnection()
|
|
159
|
-
|
|
160
|
-
return
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
if (this.connected) {
|
|
164
|
-
this.lastEventTimestamp = new Date().getTime()
|
|
165
|
-
} else {
|
|
166
|
-
this.initSocketConnection()
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
private onConnect () {
|
|
171
|
-
if (this.keepReconnectInterval) {
|
|
172
|
-
clearInterval(this.keepReconnectInterval)
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
this.connected = true
|
|
176
|
-
|
|
177
|
-
this.eventsSdkClass.loggerClass.log(
|
|
178
|
-
LoggerTypeEnum.INFO,
|
|
179
|
-
EventsEnum.CONNECT,
|
|
180
|
-
this.eventsSdkClass.reconnectOptions
|
|
181
|
-
)
|
|
182
|
-
|
|
183
|
-
this.eventsSdkClass.eventEmitterClass.emit(EventsEnum.ONLINE_STATUS_EVENT, { isSocketConnected: true })
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
private onDisconnect (reason: Socket.DisconnectReason) {
|
|
187
|
-
this.connected = false
|
|
188
|
-
|
|
189
|
-
this.eventsSdkClass.loggerClass.log(
|
|
190
|
-
LoggerTypeEnum.INFO,
|
|
191
|
-
EventsEnum.DISCONNECT,
|
|
192
|
-
reason
|
|
193
|
-
)
|
|
194
|
-
|
|
195
|
-
this.closeAllConnections()
|
|
196
|
-
|
|
197
|
-
this.eventsSdkClass.eventEmitterClass.emit(EventsEnum.ONLINE_STATUS_EVENT, { isSocketConnected: false })
|
|
198
|
-
|
|
199
|
-
if (!this.doReconnect) {
|
|
200
|
-
return
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
console.log('attempt to connect...')
|
|
204
|
-
this.eventsSdkClass.connect(ServerParameter.NEXT)
|
|
205
|
-
}
|
|
206
|
-
|
|
207
|
-
private onConnectError (data: Error) {
|
|
208
|
-
this.eventsSdkClass.eventEmitterClass.emit(EventsEnum.ONLINE_STATUS_EVENT, { isSocketConnected: false })
|
|
209
|
-
|
|
210
|
-
this.eventsSdkClass.loggerClass.log(
|
|
211
|
-
LoggerTypeEnum.ERROR,
|
|
212
|
-
EventsEnum.CONNECT_ERROR_EVENT,
|
|
213
|
-
data
|
|
214
|
-
)
|
|
215
|
-
|
|
216
|
-
setTimeout(() => {
|
|
217
|
-
this.eventsSdkClass.connect(ServerParameter.NEXT)
|
|
218
|
-
},this.eventsSdkClass.options.reconnectionDelay)
|
|
219
|
-
}
|
|
220
|
-
}
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import { io } from 'socket.io-client'
|
|
2
|
-
import { SocketTyped } from '@/types/socket'
|
|
3
|
-
|
|
4
|
-
const importModules: Record<string, { default?: unknown }> = import.meta.glob(
|
|
5
|
-
'./v*.js',
|
|
6
|
-
{ eager: true }
|
|
7
|
-
)
|
|
8
|
-
|
|
9
|
-
const SOCKET_NAME_REGEX = /v\d+_\d+_\d+/
|
|
10
|
-
|
|
11
|
-
export type TypedSocketIo = (...args: Parameters<typeof io>) => SocketTyped
|
|
12
|
-
|
|
13
|
-
type SocketIoFn = () => TypedSocketIo
|
|
14
|
-
|
|
15
|
-
function isSocketIoFn (socket: unknown): socket is SocketIoFn {
|
|
16
|
-
return typeof socket === 'function'
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
const sockets = Object.entries(importModules)
|
|
20
|
-
.reduce<Record<string, TypedSocketIo>>(
|
|
21
|
-
(acc, currentValue) => {
|
|
22
|
-
const module = currentValue[1].default
|
|
23
|
-
const moduleName = currentValue[0].match(SOCKET_NAME_REGEX)?.[0]
|
|
24
|
-
|
|
25
|
-
if (isSocketIoFn(module) && moduleName) {
|
|
26
|
-
acc[moduleName] = module()
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
return acc
|
|
30
|
-
},
|
|
31
|
-
{}
|
|
32
|
-
)
|
|
33
|
-
|
|
34
|
-
const getSocketVersion = (version: string) => {
|
|
35
|
-
if (version in sockets) {
|
|
36
|
-
return sockets[version]
|
|
37
|
-
} else {
|
|
38
|
-
throw new Error(`Socket version ${version} not found`)
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
const makeSocketVersion = (version: string, ...args: Parameters<typeof io>) => {
|
|
43
|
-
const socket = getSocketVersion(version)
|
|
44
|
-
|
|
45
|
-
return socket(...args)
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
export default {
|
|
49
|
-
...sockets,
|
|
50
|
-
getSocketVersion,
|
|
51
|
-
makeSocketVersion
|
|
52
|
-
}
|