@voicenter-team/events-sdk 0.0.14 → 0.0.18

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.
@@ -23,13 +23,12 @@
23
23
  <script lang="ts" setup>
24
24
  import {reactive, ref} from 'vue'
25
25
  import EventsSdkClass from '@/index'
26
- import {eventsSdkDefaultOptions} from '@/classes/events-sdk/events-sdk-default-options'
27
26
  import {EventsEnum} from '@/enum/events.enum'
28
27
  import {EventTypeData} from '@/types/events'
29
28
  import {LoginType} from "@/enum/auth.enum";
30
29
 
31
30
  /* Data */
32
- const token = ref('lJVBSEk084tzLaFpIWTReBw54trHD2Jlt8hThhX6OAxJ5IjyCC740znrXXgIzj1QtM67n2NOEGNn4SjrPJxuvkxbFb4tWHjS3cyh')
31
+ const token = ref('')
33
32
  const loading = ref(false)
34
33
  const loggedId = ref(false)
35
34
  const events = reactive<{ [K in EventsEnum]?: Array<EventTypeData<K>> }>({})
@@ -43,17 +42,12 @@ async function login() {
43
42
  loading.value = true
44
43
 
45
44
  const sdk = new EventsSdkClass({
46
- "token": "lJVBSEk084tzLaFpIWTReBw54trHD2Jlt8hThhX6OAxJ5IjyCC740znrXXgIzj1QtM67n2NOEGNn4SjrPJxuvkxbFb4tWHjS3cyh",
47
- "serverFetchStrategy": "remote",
48
- "url": "https://monitor2.comms24x7.com/monitorAPI/getMonitorUrls",
49
- "loginUrl": "https://loginapi.comms24x7.com/monitorAPI/Login",
50
- "refreshTokenUrl": "https://loginapi.comms24x7.com/monitorAPI/RefreshIdentityToken",
51
- "servers": [{
52
- "URLID": 1,
53
- "Priority": 5,
54
- "Version": "1.3.7",
55
- "Domain": "monitor1.comms24x7.com"
56
- }, {"URLID": 2, "Priority": 4, "Version": "1.3.7", "Domain": "monitor2.comms24x7.com"}]
45
+ loginUrl: "https://loginapidev.voicenter.co.il/Auth/Login/Voicenter/Monitor",
46
+ refreshTokenUrl: "https://loginapidev.voicenter.co.il/Auth/RefreshToken",
47
+ loginType: LoginType.TOKEN, // <=== "User" or "Token"
48
+ token: 'QMSVU9dwNYC9Le9VCBqx24AB9TYyWj9Xn5aCPV0GFHIWoShQqfPtnAPmnw24xpJIUSsDDtlac2OPpjx0t3MSkxH3AhiQGHCeGZ8e',
49
+ getSettingsUrl: "https://loginapidev.voicenter.co.il/Application/GetSettings",
50
+ isNewStack: true,
57
51
  })
58
52
 
59
53
  await sdk.init()
@@ -185,7 +179,7 @@ async function login() {
185
179
  alert('Login failed')
186
180
  }
187
181
  },
188
- 5000
182
+ 15000
189
183
  )
190
184
  }
191
185
  </script>
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@voicenter-team/events-sdk",
3
- "version": "0.0.14",
3
+ "version": "0.0.18",
4
4
  "description": "",
5
5
  "main": "dist/voicenter-events-sdk.cjs.js",
6
6
  "jsdelivr": "dist/voicenter-events-sdk.umd.js",
7
7
  "module": "dist/voicenter-events-sdk.es.js",
8
8
  "unpkg": "dist/voicenter-events-sdk.umd.js",
9
- "types": "dist/index.d.ts",
9
+ "types": "dist/voicenter-events-sdk.d.ts",
10
10
  "type": "module",
11
11
  "scripts": {
12
12
  "build": "vite build",
@@ -28,8 +28,8 @@
28
28
  "devDependencies": {
29
29
  "@types/chrome": "0.0.259",
30
30
  "@types/jest": "29.5.11",
31
- "@types/js-md5": "^0.7.2",
32
31
  "@types/lodash": "^4.14.200",
32
+ "@types/md5": "^2.3.5",
33
33
  "@types/node": "20.11.13",
34
34
  "@typescript-eslint/eslint-plugin": "6.20.0",
35
35
  "@typescript-eslint/parser": "6.20.0",
@@ -48,7 +48,8 @@
48
48
  "vite-plugin-dts": "3.7.2"
49
49
  },
50
50
  "dependencies": {
51
- "js-md5": "0.8.3",
52
- "lodash": "^4.17.21"
51
+ "@voicenter-team/socketio-storage-logger": "^1.0.1",
52
+ "lodash": "^4.17.21",
53
+ "md5": "^2.3.0"
53
54
  }
54
55
  }
@@ -1,4 +1,4 @@
1
- import md5 from 'js-md5'
1
+ import md5 from 'md5'
2
2
 
3
3
  import EventsSdkClass from '@/classes/events-sdk/events-sdk.class'
4
4
  import { EventsSdkOptions, ServerParameter } from '@/classes/events-sdk/events-sdk.types'
@@ -11,7 +11,6 @@ import {
11
11
  Settings
12
12
  } from '@/types/auth'
13
13
  import { LoginType } from '@/enum/auth.enum'
14
- import { getSettingsUrl } from '@/classes/auth/auth.urls'
15
14
  import { StorageClass } from '@/classes/storage/storage.class'
16
15
 
17
16
  class AuthClass{
@@ -34,7 +33,7 @@ class AuthClass{
34
33
  password: options.password
35
34
  }
36
35
 
37
- this.storageKey = md5(JSON.stringify(payload))
36
+ this.storageKey = md5(JSON.stringify(options))
38
37
 
39
38
  if (this.lastLoginTimestamp && this.lastLoginTimestamp + this.delay > new Date().getTime()) {
40
39
  return
@@ -54,7 +53,7 @@ class AuthClass{
54
53
  }
55
54
 
56
55
  private async checkLoginStatus (key: string): Promise<boolean> {
57
- const loginSessionData = await StorageClass.getSessionStorageDataByKey(key)
56
+ const loginSessionData = await StorageClass.getSessionStorageDataByKey<LoginSessionData>(key)
58
57
 
59
58
  if (loginSessionData) {
60
59
  this.onLoginResponse(loginSessionData)
@@ -121,6 +120,7 @@ class AuthClass{
121
120
  }
122
121
  if (this.eventsSdkClass.server) {
123
122
  this.eventsSdkClass.socketIoClass.getSocketIoFunction(`v=${this.eventsSdkClass.server.Version}`)
123
+ this.eventsSdkClass.loggerClass.init()
124
124
  }
125
125
  if (loginSessionData.IdentityCode) {
126
126
  this.token = loginSessionData.IdentityCode
@@ -135,7 +135,7 @@ class AuthClass{
135
135
  this.eventsSdkClass.options.tokenExpiry = loginSessionData.IdentityCodeExpiry
136
136
  this.handleTokenExpiry()
137
137
  }
138
- if (loginSessionData.RefreshToken && loginSessionData.TokenExpiry) {
138
+ if (loginSessionData.RefreshToken && loginSessionData.TokenExpiry && this.eventsSdkClass.options.loginType === LoginType.USER) {
139
139
  this.eventsSdkClass.options.refreshToken = loginSessionData.RefreshToken
140
140
  this.eventsSdkClass.options.tokenExpiry = loginSessionData.TokenExpiry
141
141
  this.handleTokenExpiry()
@@ -216,17 +216,17 @@ class AuthClass{
216
216
  })
217
217
  }
218
218
  } else {
219
- if (token) {
219
+ if (this.eventsSdkClass.options.loginType === LoginType.TOKEN) {
220
220
  body = JSON.stringify({ token })
221
221
 
222
- url = `${url}/Token`
222
+ url = `${url}/${LoginType.TOKEN}`
223
223
  } else {
224
224
  body = JSON.stringify({
225
225
  email,
226
226
  pin: password
227
227
  })
228
228
 
229
- url = `${url}/User`
229
+ url = `${url}/${LoginType.USER}`
230
230
  }
231
231
  }
232
232
 
@@ -247,13 +247,17 @@ class AuthClass{
247
247
  }
248
248
 
249
249
  private async getSettings (token: string): Promise<Settings> {
250
- const res = await fetch(getSettingsUrl, {
251
- headers: {
252
- Authorization: `Bearer ${token}`
253
- }
254
- })
250
+ if (this.eventsSdkClass.options.getSettingsUrl) {
251
+ const res = await fetch(this.eventsSdkClass.options.getSettingsUrl, {
252
+ headers: {
253
+ Authorization: `Bearer ${token}`
254
+ }
255
+ })
255
256
 
256
- return res.json()
257
+ return res.json()
258
+ } else {
259
+ throw new Error('getSettingsUrl config parameter not provided')
260
+ }
257
261
  }
258
262
 
259
263
  private async refreshToken<T> (refreshTokenUrl: string, oldRefreshToken: string): Promise<ExternalLoginResponse<T>> {
@@ -1,29 +1,7 @@
1
1
  import { EventsSdkOptions } from '@/classes/events-sdk/events-sdk.types'
2
- import { LoginType } from '@/enum/auth.enum'
3
2
 
4
- export const eventsSdkDefaultOptions: EventsSdkOptions = {
3
+ export const eventsSdkDefaultOptions: Partial<EventsSdkOptions> = {
5
4
  isNewStack: false,
6
- servers: [ {
7
- URLID: 1,
8
- Priority: 5,
9
- Version: '1.3.7',
10
- Domain: 'monitor1.comms24x7.com'
11
- },{
12
- URLID: 2,
13
- Priority: 4,
14
- Version: '1.3.7',
15
- Domain: 'monitor2.comms24x7.com'
16
- } ],
17
- loginUrl: 'https://loginapi.comms24x7.com/monitorAPI/Login',
18
- refreshTokenUrl: 'https://loginapi.comms24x7.com/monitorAPI/RefreshIdentityToken',
19
- fallbackServer: {
20
- Domain: 'monitor5.voicenter.co.il',
21
- Priority: 0,
22
- Version: '1.3.7',
23
- URLID: 1
24
- },
25
- token: '',
26
- loginType: LoginType.TOKEN,
27
5
  forceNew: true,
28
6
  reconnectionDelay: 10000,
29
7
  reconnectionDelayMax: 10000,
@@ -36,9 +14,8 @@ export const eventsSdkDefaultOptions: EventsSdkOptions = {
36
14
  upgrade: false,
37
15
  serverFetchStrategy: 'static',
38
16
  serverType: 0,
39
- useLogger: false,
40
- loggerSocketConnection: '',
41
- loggerServer: 'http://127.0.0.1:3000/',
17
+ useLogger: true,
18
+ loggerServer: 'http://socketlog.voicenter.co',
42
19
  loggerConfig: {
43
20
  logToConsole: true,
44
21
  overloadGlobalConsole: false,
@@ -54,7 +31,4 @@ export const eventsSdkDefaultOptions: EventsSdkOptions = {
54
31
  transports: [ 'websocket' ],
55
32
  debug: false
56
33
  },
57
- username: 'username',
58
- password: '92455783085',
59
- email: 'sasha.za@starkey.co.il',
60
34
  }
@@ -12,6 +12,7 @@ import {
12
12
  EventTypeNames,
13
13
  } from '@/types/events'
14
14
  import { EventsEnum } from '@/enum/events.enum'
15
+ import { LoggerClass } from '@/classes/logger/logger.class'
15
16
 
16
17
  class EventsSdkClass{
17
18
  constructor (options: EventsSdkOptions) {
@@ -37,6 +38,7 @@ class EventsSdkClass{
37
38
 
38
39
  public authClass = new AuthClass(this)
39
40
  public socketIoClass = new SocketIoClass(this)
41
+ public loggerClass = new LoggerClass(this)
40
42
 
41
43
  public reconnectOptions: ReconnectOptions = {
42
44
  retryCount: 1,
@@ -1,9 +1,12 @@
1
+ import { Socket } from 'socket.io-client'
2
+ import { AsyncStorageLoggerConfig } from '@voicenter-team/socketio-storage-logger/build/interfaces/AsyncStorageLoggerConfig'
1
3
  import { LoginType } from '@/enum/auth.enum'
2
4
 
3
5
  export interface EventsSdkOptions {
4
6
  isNewStack?: boolean,
5
7
  servers: Server[],
6
8
  loginUrl: string,
9
+ getSettingsUrl?: string
7
10
  fallbackServer: Server,
8
11
  refreshTokenUrl: string,
9
12
  refreshToken?: string,
@@ -23,9 +26,9 @@ export interface EventsSdkOptions {
23
26
  serverFetchStrategy?: string,
24
27
  serverType?: number,
25
28
  useLogger?: boolean,
26
- loggerSocketConnection?: string,
27
- loggerServer?: string,
28
- loggerConfig?: LoggerConfig,
29
+ loggerSocketConnection?: Socket,
30
+ loggerServer: string,
31
+ loggerConfig: Partial<AsyncStorageLoggerConfig>,
29
32
  loggerConnectOptions?: LoggerConnectOptions,
30
33
  email: string,
31
34
  password: string,
@@ -50,7 +53,9 @@ export interface LoggerConnectOptions {
50
53
  reconnection?: boolean,
51
54
  reconnectionDelay?: number,
52
55
  reconnectionAttempts?: number,
53
- perMessageDeflate?: boolean,
56
+ perMessageDeflate?: {
57
+ threshold: number
58
+ },
54
59
  upgrade?: boolean,
55
60
  transports?: string[],
56
61
  debug?: boolean
@@ -0,0 +1,71 @@
1
+ import { Socket } from 'socket.io-client'
2
+ import { AsyncStorageLogger } from '@voicenter-team/socketio-storage-logger/build/AsyncStorageLogger'
3
+ // import {
4
+ // AsyncStorageLoggerConfig
5
+ // } from '@voicenter-team/socketio-storage-logger/build/interfaces/AsyncStorageLoggerConfig'
6
+ import EventsSdkClass from '@/classes/events-sdk/events-sdk.class'
7
+ import { LoggerTypeEnum } from '@/enum/logger.enum'
8
+ import { EventsEnum } from '@/enum/events.enum'
9
+ // import { StorageClass } from '@/classes/storage/storage.class'
10
+
11
+ export class LoggerClass{
12
+ constructor (private readonly eventsSdkClass: EventsSdkClass) {
13
+ this.eventsSdkClass = eventsSdkClass
14
+ }
15
+
16
+ public io: Socket | undefined
17
+ private storageLogger: AsyncStorageLogger | undefined
18
+
19
+ public init () {
20
+ if (!this.eventsSdkClass.options.useLogger) {
21
+ return
22
+ }
23
+
24
+ if (this.eventsSdkClass.options.loggerSocketConnection) {
25
+ this.io = this.eventsSdkClass.options.loggerSocketConnection
26
+ } else {
27
+ if (this.eventsSdkClass.socketIoClass.ioFunction) {
28
+ this.io = this.eventsSdkClass.socketIoClass.ioFunction(
29
+ this.eventsSdkClass.options.loggerServer,
30
+ this.eventsSdkClass.options.loggerConnectOptions
31
+ )
32
+ }
33
+ }
34
+
35
+ if (this.io) {
36
+ // this.storageLogger = new AsyncStorageLogger({
37
+ // ...this.eventsSdkClass.options.loggerConfig as AsyncStorageLoggerConfig,
38
+ // socketConnection: this.io,
39
+ // getItem: async (key: string) => {
40
+ // const result = await StorageClass.getSessionStorageDataByKey(key, false)
41
+ //
42
+ // if (result === undefined) {
43
+ // return null
44
+ // }
45
+ //
46
+ // return result
47
+ // },
48
+ // setItem (key: string, value: string) {
49
+ // return StorageClass.updateSessionStorageKey(key, value)
50
+ // }
51
+ // })
52
+ }
53
+ }
54
+
55
+ public log (type: LoggerTypeEnum, event: EventsEnum, ...data: unknown[]) {
56
+ const result = [ event, ...data ]
57
+ if (this.storageLogger) {
58
+ if (type === LoggerTypeEnum.INFO) {
59
+ this.storageLogger.log(result)
60
+ } else if (type === LoggerTypeEnum.ERROR) {
61
+ this.storageLogger.error(result)
62
+ }
63
+ } else {
64
+ if (type === LoggerTypeEnum.INFO) {
65
+ console.log(result)
66
+ } else if (type === LoggerTypeEnum.ERROR) {
67
+ console.error(result)
68
+ }
69
+ }
70
+ }
71
+ }
@@ -6,6 +6,7 @@ import { ServerParameter } from '@/classes/events-sdk/events-sdk.types'
6
6
  import { EventsEnum } from '@/enum/events.enum'
7
7
  import { KeepAliveResponseEvent } from '@/types/events'
8
8
  import { StorageClass } from '@/classes/storage/storage.class'
9
+ // import { LoggerTypeEnum } from '@/enum/logger.enum'
9
10
 
10
11
  export class SocketIoClass{
11
12
  constructor (private readonly eventsSdkClass: EventsSdkClass) {
@@ -42,7 +43,12 @@ export class SocketIoClass{
42
43
 
43
44
  const url = `${protocol}://${domain}`
44
45
 
45
- // this.log(INFO, 'Connecting to..', url);
46
+ // this.eventsSdkClass.loggerClass.log(
47
+ // LoggerTypeEnum.INFO,
48
+ // EventsEnum.CONNECT,
49
+ // 'Connecting to..',
50
+ // url
51
+ // )
46
52
 
47
53
  const options: Partial<ManagerOptions & SocketOptions> = {
48
54
  reconnection: false,
@@ -1,12 +1,16 @@
1
- import { LoginSessionData } from '@/types/auth'
2
-
3
1
  export class StorageClass{
4
- public static async getSessionStorageDataByKey (key: string): Promise<LoginSessionData | undefined> {
2
+ public static getSessionStorageDataByKey <T extends object> (key: string, doParse?: true): Promise<T | undefined>
3
+ public static getSessionStorageDataByKey (key: string, doParse?: false): Promise<string | undefined>
4
+ public static async getSessionStorageDataByKey (key: string, doParse = true) {
5
5
  if (typeof chrome !== 'undefined' && typeof chrome.storage !== 'undefined') {
6
6
  const loginSessionKey = await chrome.storage.session.get(key)
7
7
 
8
8
  if (loginSessionKey[key]) {
9
- return JSON.parse(loginSessionKey[key])
9
+ if (doParse) {
10
+ return JSON.parse(loginSessionKey[key])
11
+ } else {
12
+ return loginSessionKey[key]
13
+ }
10
14
  }
11
15
  }
12
16
 
@@ -14,12 +18,16 @@ export class StorageClass{
14
18
  const loginSessionKey = window.sessionStorage.getItem(key)
15
19
 
16
20
  if (loginSessionKey) {
17
- return JSON.parse(loginSessionKey)
21
+ if (doParse) {
22
+ return JSON.parse(loginSessionKey)
23
+ } else {
24
+ return loginSessionKey
25
+ }
18
26
  }
19
27
  }
20
28
  }
21
29
 
22
- public static async updateSessionStorageKey (key: string, storageData: Partial<LoginSessionData>) {
30
+ public static async updateSessionStorageKey <T> (key: string, storageData: Partial<T>) {
23
31
  if (typeof chrome !== 'undefined' && typeof chrome.storage !== 'undefined') {
24
32
  await chrome.storage.session.set({
25
33
  [key]: JSON.stringify(storageData)
@@ -40,4 +48,4 @@ export class StorageClass{
40
48
  window.sessionStorage.clear()
41
49
  }
42
50
  }
43
- }
51
+ }
@@ -0,0 +1,5 @@
1
+ export enum LoggerTypeEnum {
2
+ INFO = 'INFO',
3
+ WARN = 'WARN',
4
+ ERROR = 'ERROR'
5
+ }
@@ -1,10 +1,4 @@
1
- import {
2
- EventNameEnum,
3
- EventsEnum,
4
- ExtensionEventReasonEnum,
5
- ExtensionHangupCauseEnum,
6
- QueueEventReasonEnum
7
- } from '@/enum/events.enum'
1
+ import { EventNameEnum, EventsEnum, ExtensionEventReasonEnum, ExtensionHangupCauseEnum, QueueEventReasonEnum } from '@/enum/events.enum'
8
2
  import { Queue, Extension, Dialer, User } from '@/types/events.common'
9
3
 
10
4
  /**
@@ -1,5 +1,5 @@
1
1
  import { Socket } from 'socket.io-client'
2
2
  import { EventCallbackRegistry } from '@/types/events'
3
- import { EventsEnum } from 'enum/events.enum'
3
+ import { EventsEnum } from '@/enum/events.enum'
4
4
 
5
5
  export type SocketTyped = Socket<EventCallbackRegistry, Record<EventsEnum, any>>
@@ -1,8 +0,0 @@
1
- const getSettingsUrl = 'https://loginapidev.voicenter.co.il/Application/GetSettings'
2
- const refreshTokenUrl = 'https://loginapidev.voicenter.co.il/Auth/RefreshToken'
3
-
4
-
5
- export {
6
- getSettingsUrl,
7
- refreshTokenUrl
8
- }