@voicenter-team/events-sdk 0.0.29 → 0.0.30

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.
Files changed (52) hide show
  1. package/dist/voicenter-events-sdk.cjs.js.map +1 -1
  2. package/dist/voicenter-events-sdk.es.js.map +1 -1
  3. package/dist/voicenter-events-sdk.iife.js.map +1 -1
  4. package/dist/voicenter-events-sdk.umd.js.map +1 -1
  5. package/package.json +59 -56
  6. package/.eslintrc.cjs +0 -17
  7. package/.github/workflows/main.yml +0 -16
  8. package/.idea/VoicenterEventsSDK.iml +0 -12
  9. package/.idea/git_toolbox_prj.xml +0 -15
  10. package/.idea/inspectionProfiles/Project_Default.xml +0 -6
  11. package/.idea/jsLibraryMappings.xml +0 -6
  12. package/.idea/jsLinters/eslint.xml +0 -7
  13. package/.idea/modules.xml +0 -8
  14. package/.idea/vcs.xml +0 -6
  15. package/.nvmrc +0 -1
  16. package/TODELETE_TEMP/events.json +0 -69122
  17. package/TODELETE_TEMP/temphelper.cjs +0 -101
  18. package/docs/package-lock.json +0 -3827
  19. package/docs/package.json +0 -26
  20. package/docs/src/.vuepress/client.js +0 -8
  21. package/docs/src/.vuepress/components/Demo.vue +0 -303
  22. package/docs/src/.vuepress/config.js +0 -60
  23. package/docs/src/.vuepress/public/favicon.ico +0 -0
  24. package/docs/src/.vuepress/public/images/logo.png +0 -0
  25. package/docs/src/.vuepress/styles/index.scss +0 -0
  26. package/docs/src/.vuepress/styles/index.styl +0 -8
  27. package/docs/src/.vuepress/styles/palette.styl +0 -10
  28. package/docs/src/demo.md +0 -7
  29. package/docs/src/index.md +0 -4
  30. package/jest.config.js +0 -11
  31. package/src/classes/auth/auth.class.ts +0 -355
  32. package/src/classes/event-emitter/event-emitter.class.ts +0 -73
  33. package/src/classes/events-sdk/events-sdk-default-options.ts +0 -34
  34. package/src/classes/events-sdk/events-sdk.class.ts +0 -208
  35. package/src/classes/events-sdk/events-sdk.test.ts +0 -17
  36. package/src/classes/events-sdk/events-sdk.types.ts +0 -75
  37. package/src/classes/logger/logger.class.ts +0 -61
  38. package/src/classes/socket-io/socket-io.class.ts +0 -220
  39. package/src/classes/socket-io/socket-io.d.ts +0 -10
  40. package/src/classes/socket-io/versions/index.ts +0 -52
  41. package/src/classes/socket-io/versions/v1_3_7.js +0 -2083
  42. package/src/classes/storage/storage.class.ts +0 -51
  43. package/src/enum/auth.enum.ts +0 -4
  44. package/src/enum/logger.enum.ts +0 -5
  45. package/src/index.ts +0 -13
  46. package/src/types/auth.d.ts +0 -53
  47. package/src/types/events.d.ts +0 -83
  48. package/src/types/listeners.d.ts +0 -37
  49. package/src/types/public-api.d.ts +0 -39
  50. package/src/types/socket.d.ts +0 -5
  51. package/tsconfig.json +0 -47
  52. 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,10 +0,0 @@
1
- export interface SocketIoOptions {
2
- reconnection: boolean,
3
- perMessageDeflate: boolean,
4
- upgrade: boolean,
5
- transports: string[],
6
- debug: boolean,
7
- query: {
8
- token: string
9
- }
10
- }
@@ -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
- }