@voicenter-team/events-sdk 0.0.5 → 0.0.7
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 +19 -19
- package/dist/voicenter-events-sdk.cjs.js.map +1 -1
- package/dist/voicenter-events-sdk.d.ts +11 -15
- package/dist/voicenter-events-sdk.es.js +1363 -1346
- package/dist/voicenter-events-sdk.es.js.map +1 -1
- package/dist/voicenter-events-sdk.iife.js +19 -19
- package/dist/voicenter-events-sdk.iife.js.map +1 -1
- package/dist/voicenter-events-sdk.umd.js +23 -23
- package/dist/voicenter-events-sdk.umd.js.map +1 -1
- package/docs/src/.vuepress/components/Demo.vue +2 -0
- package/package.json +16 -16
- package/src/classes/auth/auth.class.ts +98 -89
- package/src/classes/auth/auth.urls.ts +10 -0
- package/src/classes/events-sdk/events-sdk-default-options.ts +7 -13
- package/src/classes/events-sdk/events-sdk.types.ts +8 -16
- package/src/classes/socket-io/socket-io.class.ts +3 -7
- package/src/classes/storage/storage.class.ts +43 -0
- package/src/enum/auth.enum.ts +4 -0
- package/src/index.ts +2 -5
- package/src/types/auth.d.ts +34 -3
- package/src/types/events.common.d.ts +1 -1
- package/src/classes/auth/auth.test.ts +0 -14
|
@@ -26,6 +26,7 @@ import EventsSdkClass from '@/index'
|
|
|
26
26
|
import {eventsSdkDefaultOptions} from '@/classes/events-sdk/events-sdk-default-options'
|
|
27
27
|
import {EventsEnum} from '@/enum/events.enum'
|
|
28
28
|
import {EventTypeData} from '@/types/events'
|
|
29
|
+
import {LoginType} from "@/enum/auth.enum";
|
|
29
30
|
|
|
30
31
|
/* Data */
|
|
31
32
|
const token = ref('QMSVU9dwNYC9Le9VCBqx24AB9TYyWj9Xn5aCPV0GFHIWoShQqfPtnAPmnw24xpJIUSsDDtlac2OPpjx0t3MSkxH3AhiQGHCeGZ8e')
|
|
@@ -44,6 +45,7 @@ async function login() {
|
|
|
44
45
|
const sdk = new EventsSdkClass({
|
|
45
46
|
...eventsSdkDefaultOptions,
|
|
46
47
|
token: token.value,
|
|
48
|
+
loginType: LoginType.USER,
|
|
47
49
|
})
|
|
48
50
|
|
|
49
51
|
await sdk.init()
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@voicenter-team/events-sdk",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.7",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "dist/voicenter-events-sdk.cjs.js",
|
|
6
6
|
"jsdelivr": "dist/voicenter-events-sdk.umd.js",
|
|
@@ -26,29 +26,29 @@
|
|
|
26
26
|
"author": "",
|
|
27
27
|
"license": "ISC",
|
|
28
28
|
"devDependencies": {
|
|
29
|
-
"@types/chrome": "
|
|
30
|
-
"@types/jest": "
|
|
29
|
+
"@types/chrome": "0.0.259",
|
|
30
|
+
"@types/jest": "29.5.11",
|
|
31
31
|
"@types/js-md5": "^0.7.2",
|
|
32
32
|
"@types/lodash": "^4.14.200",
|
|
33
|
-
"@types/node": "
|
|
34
|
-
"@typescript-eslint/eslint-plugin": "
|
|
35
|
-
"@typescript-eslint/parser": "
|
|
33
|
+
"@types/node": "20.11.13",
|
|
34
|
+
"@typescript-eslint/eslint-plugin": "6.20.0",
|
|
35
|
+
"@typescript-eslint/parser": "6.20.0",
|
|
36
36
|
"@voicenter-team/eslint-config-ts": "^1.0.22",
|
|
37
|
-
"dotenv": "
|
|
38
|
-
"eslint": "
|
|
39
|
-
"eslint-plugin-jest": "
|
|
37
|
+
"dotenv": "16.4.1",
|
|
38
|
+
"eslint": "8.56.0",
|
|
39
|
+
"eslint-plugin-jest": "27.6.3",
|
|
40
40
|
"jest": "^29.7.0",
|
|
41
41
|
"pre-commit": "^1.2.2",
|
|
42
|
-
"socket.io-client": "
|
|
43
|
-
"swagger-axios-codegen": "
|
|
44
|
-
"ts-jest": "
|
|
42
|
+
"socket.io-client": "4.7.4",
|
|
43
|
+
"swagger-axios-codegen": "0.16.8",
|
|
44
|
+
"ts-jest": "29.1.2",
|
|
45
45
|
"tsc-alias": "^1.8.6",
|
|
46
|
-
"typescript": "
|
|
47
|
-
"vite": "
|
|
48
|
-
"vite-plugin-dts": "
|
|
46
|
+
"typescript": "5.3.3",
|
|
47
|
+
"vite": "5.0.12",
|
|
48
|
+
"vite-plugin-dts": "3.7.2"
|
|
49
49
|
},
|
|
50
50
|
"dependencies": {
|
|
51
|
-
"js-md5": "
|
|
51
|
+
"js-md5": "0.8.3",
|
|
52
52
|
"lodash": "^4.17.21"
|
|
53
53
|
}
|
|
54
54
|
}
|
|
@@ -1,27 +1,39 @@
|
|
|
1
1
|
import md5 from 'js-md5'
|
|
2
2
|
|
|
3
3
|
import EventsSdkClass from '@/classes/events-sdk/events-sdk.class'
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
4
|
+
import { EventsSdkOptions, ServerParameter } from '@/classes/events-sdk/events-sdk.types'
|
|
5
|
+
import {
|
|
6
|
+
ExternalLoginRequestBody,
|
|
7
|
+
ExternalLoginResponse,
|
|
8
|
+
LoginSessionData,
|
|
9
|
+
LoginSessionPayload,
|
|
10
|
+
Settings
|
|
11
|
+
} from '@/types/auth'
|
|
12
|
+
import { LoginType } from '@/enum/auth.enum'
|
|
13
|
+
import { getSettingsUrl, newLoginUrl, refreshTokenUrl } from '@/classes/auth/auth.urls'
|
|
14
|
+
import { StorageClass } from '@/classes/storage/storage.class'
|
|
6
15
|
|
|
7
16
|
class AuthClass{
|
|
8
17
|
constructor (private readonly eventsSdkClass: EventsSdkClass) {
|
|
9
18
|
this.eventsSdkClass = eventsSdkClass
|
|
19
|
+
|
|
20
|
+
this.storageKey = ''
|
|
10
21
|
}
|
|
11
|
-
|
|
22
|
+
|
|
12
23
|
private delay = 1000
|
|
13
24
|
public lastLoginTimestamp: number | undefined
|
|
14
25
|
public token: string | undefined
|
|
15
26
|
|
|
27
|
+
private storageKey: string
|
|
28
|
+
|
|
16
29
|
public async login (options: EventsSdkOptions) {
|
|
17
30
|
const payload: LoginSessionPayload = {
|
|
18
31
|
token: options.token,
|
|
19
32
|
email: options.email,
|
|
20
|
-
username: options.username,
|
|
21
33
|
password: options.password
|
|
22
34
|
}
|
|
23
35
|
|
|
24
|
-
|
|
36
|
+
this.storageKey = md5(JSON.stringify(payload))
|
|
25
37
|
|
|
26
38
|
if (this.lastLoginTimestamp && this.lastLoginTimestamp + this.delay > new Date().getTime()) {
|
|
27
39
|
return
|
|
@@ -29,10 +41,10 @@ class AuthClass{
|
|
|
29
41
|
|
|
30
42
|
this.updateLastLoginTimestamp()
|
|
31
43
|
|
|
32
|
-
const isLoggedIn = await this.checkLoginStatus(
|
|
44
|
+
const isLoggedIn = await this.checkLoginStatus(this.storageKey)
|
|
33
45
|
|
|
34
46
|
if (!isLoggedIn) {
|
|
35
|
-
await this.userLoginFunction(payload,
|
|
47
|
+
await this.userLoginFunction(payload, this.storageKey, options.loginType)
|
|
36
48
|
}
|
|
37
49
|
}
|
|
38
50
|
|
|
@@ -40,78 +52,62 @@ class AuthClass{
|
|
|
40
52
|
this.lastLoginTimestamp = new Date().getTime()
|
|
41
53
|
}
|
|
42
54
|
|
|
43
|
-
private async checkLoginStatus (
|
|
44
|
-
|
|
45
|
-
if (options.environment === Environment.BROWSER && window) {
|
|
46
|
-
const loginSessionKey = window.sessionStorage.getItem(key)
|
|
55
|
+
private async checkLoginStatus (key: string): Promise<boolean> {
|
|
56
|
+
const loginSessionData = await StorageClass.getSessionStorageDataByKey(key)
|
|
47
57
|
|
|
48
|
-
|
|
49
|
-
|
|
58
|
+
if (loginSessionData) {
|
|
59
|
+
this.onLoginResponse(loginSessionData)
|
|
50
60
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
return true
|
|
54
|
-
}
|
|
61
|
+
return true
|
|
55
62
|
}
|
|
56
|
-
if (options.environment === Environment.CHROME_EXTENSION && chrome) {
|
|
57
|
-
const loginSessionKey = await chrome.storage.session.get(key)
|
|
58
63
|
|
|
59
|
-
|
|
60
|
-
|
|
64
|
+
return false
|
|
65
|
+
}
|
|
61
66
|
|
|
62
|
-
|
|
67
|
+
private async userLoginFunction (
|
|
68
|
+
payload: LoginSessionPayload,
|
|
69
|
+
key: string,
|
|
70
|
+
loginType: LoginType,
|
|
71
|
+
) {
|
|
72
|
+
const externalLoginResponse = await this.externalLogin(
|
|
73
|
+
newLoginUrl,
|
|
74
|
+
payload,
|
|
75
|
+
loginType,
|
|
76
|
+
)
|
|
63
77
|
|
|
64
|
-
|
|
65
|
-
|
|
78
|
+
const settings = await this.getSettings(externalLoginResponse.Data.AccessToken)
|
|
79
|
+
|
|
80
|
+
const loginSessionData: LoginSessionData = {
|
|
81
|
+
...externalLoginResponse.Data,
|
|
82
|
+
...settings
|
|
66
83
|
}
|
|
67
|
-
|
|
84
|
+
|
|
85
|
+
this.onLoginResponse(loginSessionData)
|
|
86
|
+
|
|
87
|
+
await StorageClass.updateSessionStorageKey(key, loginSessionData)
|
|
68
88
|
}
|
|
69
89
|
|
|
70
90
|
private onLoginResponse (loginSessionData: LoginSessionData) {
|
|
71
|
-
if (loginSessionData.
|
|
72
|
-
this.eventsSdkClass.
|
|
91
|
+
if (loginSessionData.MonitorList && loginSessionData.MonitorList.length) {
|
|
92
|
+
this.eventsSdkClass.servers = [ ...loginSessionData.MonitorList ]
|
|
93
|
+
this.eventsSdkClass.server = this.eventsSdkClass.servers.reduce((prev, current) =>
|
|
94
|
+
(prev.Priority > current.Priority) ? prev : current
|
|
95
|
+
)
|
|
73
96
|
}
|
|
74
|
-
if (
|
|
75
|
-
this.eventsSdkClass.server
|
|
76
|
-
Priority: 0,
|
|
77
|
-
Domain: loginSessionData.Url.replace('https://', '')
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
if (loginSessionData.URLList) {
|
|
81
|
-
this.eventsSdkClass.servers = loginSessionData.URLList.map((url, index) => {
|
|
82
|
-
return {
|
|
83
|
-
Priority: index,
|
|
84
|
-
Domain: url.replace('https://', '')
|
|
85
|
-
}
|
|
86
|
-
})
|
|
97
|
+
if (this.eventsSdkClass.server) {
|
|
98
|
+
this.eventsSdkClass.socketIoClass.getSocketIoFunction(`v=${this.eventsSdkClass.server.Version}`)
|
|
87
99
|
}
|
|
88
|
-
if (loginSessionData.
|
|
89
|
-
|
|
90
|
-
this.token = loginSessionData.Token
|
|
100
|
+
if (loginSessionData.IdentityCode) {
|
|
101
|
+
this.token = loginSessionData.IdentityCode
|
|
91
102
|
this.eventsSdkClass.connect(ServerParameter.DEFAULT, true)
|
|
92
103
|
}
|
|
93
|
-
if (loginSessionData.RefreshToken && loginSessionData.
|
|
104
|
+
if (loginSessionData.RefreshToken && loginSessionData.IdentityCodeExpiry && this.eventsSdkClass.options.loginType === LoginType.USER) {
|
|
94
105
|
this.eventsSdkClass.options.refreshToken = loginSessionData.RefreshToken
|
|
95
|
-
this.eventsSdkClass.options.tokenExpiry = loginSessionData.
|
|
106
|
+
this.eventsSdkClass.options.tokenExpiry = loginSessionData.IdentityCodeExpiry
|
|
96
107
|
this.handleTokenExpiry()
|
|
97
108
|
}
|
|
98
109
|
}
|
|
99
110
|
|
|
100
|
-
private async userLoginFunction (payload: LoginSessionPayload, key: string) {
|
|
101
|
-
const externalLoginUrl = this.getExternalLoginUrl(this.eventsSdkClass.options.loginUrl, this.eventsSdkClass.options.loginType)
|
|
102
|
-
|
|
103
|
-
const externalLoginResponse = await this.externalLogin(externalLoginUrl, payload, this.eventsSdkClass.options.loginType)
|
|
104
|
-
|
|
105
|
-
this.onLoginResponse(externalLoginResponse)
|
|
106
|
-
|
|
107
|
-
if (this.eventsSdkClass.options.environment === Environment.BROWSER) {
|
|
108
|
-
window.sessionStorage.setItem(key, JSON.stringify(externalLoginResponse))
|
|
109
|
-
}
|
|
110
|
-
if (this.eventsSdkClass.options.environment === Environment.CHROME_EXTENSION) {
|
|
111
|
-
await chrome.storage.session.set({ [key]: JSON.stringify(externalLoginResponse) })
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
|
|
115
111
|
public handleTokenExpiry () {
|
|
116
112
|
let date: Date
|
|
117
113
|
|
|
@@ -127,41 +123,44 @@ class AuthClass{
|
|
|
127
123
|
|
|
128
124
|
setTimeout(
|
|
129
125
|
async () => {
|
|
130
|
-
if (
|
|
131
|
-
|
|
132
|
-
|
|
126
|
+
if (refreshTokenUrl && this.eventsSdkClass.options.refreshToken) {
|
|
127
|
+
this.eventsSdkClass.socketIoClass.closeAllConnections()
|
|
128
|
+
|
|
129
|
+
const refreshTokenResponse = await this.refreshToken(refreshTokenUrl, this.eventsSdkClass.options.refreshToken)
|
|
133
130
|
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
131
|
+
const settings = await this.getSettings(refreshTokenResponse.Data.AccessToken)
|
|
132
|
+
|
|
133
|
+
const loginSessionData: LoginSessionData = {
|
|
134
|
+
...refreshTokenResponse.Data,
|
|
135
|
+
...settings
|
|
137
136
|
}
|
|
138
137
|
|
|
139
|
-
|
|
138
|
+
this.onLoginResponse(loginSessionData)
|
|
139
|
+
|
|
140
|
+
await StorageClass.updateSessionStorageKey(this.storageKey, loginSessionData)
|
|
140
141
|
}
|
|
141
142
|
},
|
|
142
143
|
maxAllowedTimeout)
|
|
143
144
|
}
|
|
144
145
|
|
|
145
|
-
private
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
if (loginType === 'token') {
|
|
159
|
-
body = JSON.stringify({ token })
|
|
146
|
+
private async externalLogin (
|
|
147
|
+
url: string,
|
|
148
|
+
{ password, token, email }: LoginSessionPayload,
|
|
149
|
+
loginType: LoginType,
|
|
150
|
+
): Promise<ExternalLoginResponse> {
|
|
151
|
+
let body: ExternalLoginRequestBody
|
|
152
|
+
|
|
153
|
+
if (loginType === LoginType.TOKEN) {
|
|
154
|
+
body = {
|
|
155
|
+
identityType: LoginType.TOKEN,
|
|
156
|
+
token
|
|
157
|
+
}
|
|
160
158
|
} else {
|
|
161
|
-
body =
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
159
|
+
body = {
|
|
160
|
+
identityType: LoginType.USER,
|
|
161
|
+
username: email,
|
|
162
|
+
password,
|
|
163
|
+
}
|
|
165
164
|
}
|
|
166
165
|
|
|
167
166
|
const res = await fetch(url, {
|
|
@@ -169,7 +168,7 @@ class AuthClass{
|
|
|
169
168
|
headers: {
|
|
170
169
|
'Content-Type': 'application/json'
|
|
171
170
|
},
|
|
172
|
-
body,
|
|
171
|
+
body: JSON.stringify(body),
|
|
173
172
|
})
|
|
174
173
|
|
|
175
174
|
const data = await res.json()
|
|
@@ -177,10 +176,20 @@ class AuthClass{
|
|
|
177
176
|
if (data.error) {
|
|
178
177
|
throw new Error(data.error)
|
|
179
178
|
}
|
|
180
|
-
return data
|
|
179
|
+
return data
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
private async getSettings (token: string): Promise<Settings> {
|
|
183
|
+
const res = await fetch(getSettingsUrl, {
|
|
184
|
+
headers: {
|
|
185
|
+
Authorization: `Bearer ${token}`
|
|
186
|
+
}
|
|
187
|
+
})
|
|
188
|
+
|
|
189
|
+
return res.json()
|
|
181
190
|
}
|
|
182
191
|
|
|
183
|
-
private async refreshToken (refreshTokenUrl: string, oldRefreshToken: string) {
|
|
192
|
+
private async refreshToken (refreshTokenUrl: string, oldRefreshToken: string): Promise<ExternalLoginResponse> {
|
|
184
193
|
const res = await fetch(refreshTokenUrl, {
|
|
185
194
|
method: 'GET',
|
|
186
195
|
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
const newLoginUrl = 'http://loginapidev.voicenter.co.il/Auth/Login/Voicenter/Monitor'
|
|
2
|
+
const getSettingsUrl = 'http://loginapidev.voicenter.co.il/Application/GetSettings'
|
|
3
|
+
const refreshTokenUrl = 'http://loginapidev.voicenter.co.il/Auth/RefreshToken'
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
export {
|
|
7
|
+
newLoginUrl,
|
|
8
|
+
getSettingsUrl,
|
|
9
|
+
refreshTokenUrl
|
|
10
|
+
}
|
|
@@ -1,17 +1,15 @@
|
|
|
1
|
-
import { EventsSdkOptions
|
|
1
|
+
import { EventsSdkOptions } from '@/classes/events-sdk/events-sdk.types'
|
|
2
|
+
import { LoginType } from '@/enum/auth.enum'
|
|
2
3
|
|
|
3
4
|
export const eventsSdkDefaultOptions: EventsSdkOptions = {
|
|
4
|
-
url: 'https://monitorapi.voicenter.co.il/monitorAPI/getMonitorUrls',
|
|
5
|
-
environment: Environment.BROWSER,
|
|
6
5
|
fallbackServer: {
|
|
7
6
|
Domain: 'monitor5.voicenter.co.il',
|
|
8
7
|
Priority: 0,
|
|
8
|
+
Version: '1.3.7',
|
|
9
|
+
URLID: 1
|
|
9
10
|
},
|
|
10
|
-
loginUrl: 'https://loginapi.voicenter.co.il/monitorAPI/Login',
|
|
11
|
-
refreshTokenUrl: 'https://loginapi.voicenter.co.il/monitorAPI/RefreshIdentityToken',
|
|
12
|
-
// servers: defaultServers, // commented temporary
|
|
13
11
|
token: '',
|
|
14
|
-
loginType:
|
|
12
|
+
loginType: LoginType.TOKEN,
|
|
15
13
|
forceNew: true,
|
|
16
14
|
reconnectionDelay: 10000,
|
|
17
15
|
reconnectionDelayMax: 10000,
|
|
@@ -22,10 +20,6 @@ export const eventsSdkDefaultOptions: EventsSdkOptions = {
|
|
|
22
20
|
protocol: 'https',
|
|
23
21
|
transports: [ 'websocket' ],
|
|
24
22
|
upgrade: false,
|
|
25
|
-
store: '',
|
|
26
|
-
extensionsModuleName: 'sdkExtensions',
|
|
27
|
-
queuesModuleName: 'sdkQueues',
|
|
28
|
-
dialersModuleName: 'sdkDialers',
|
|
29
23
|
serverFetchStrategy: 'static',
|
|
30
24
|
serverType: 0,
|
|
31
25
|
useLogger: false,
|
|
@@ -47,6 +41,6 @@ export const eventsSdkDefaultOptions: EventsSdkOptions = {
|
|
|
47
41
|
debug: false
|
|
48
42
|
},
|
|
49
43
|
username: 'username',
|
|
50
|
-
password: '
|
|
51
|
-
email: '
|
|
44
|
+
password: '78253050510',
|
|
45
|
+
email: 'test2@status.com',
|
|
52
46
|
}
|
|
@@ -1,14 +1,13 @@
|
|
|
1
|
+
import { LoginType } from 'enum/auth.enum'
|
|
2
|
+
|
|
1
3
|
export interface EventsSdkOptions {
|
|
2
|
-
url?: string,
|
|
3
|
-
environment?: string,
|
|
4
4
|
fallbackServer: Server,
|
|
5
|
-
loginUrl: string,
|
|
6
5
|
refreshTokenUrl?: string,
|
|
7
6
|
refreshToken?: string,
|
|
8
7
|
servers?: string,
|
|
9
8
|
token: string,
|
|
10
9
|
tokenExpiry?: Date,
|
|
11
|
-
loginType:
|
|
10
|
+
loginType: LoginType,
|
|
12
11
|
forceNew?: boolean,
|
|
13
12
|
reconnectionDelay: number,
|
|
14
13
|
reconnectionDelayMax?: number,
|
|
@@ -19,10 +18,6 @@ export interface EventsSdkOptions {
|
|
|
19
18
|
protocol: string,
|
|
20
19
|
transports?: string[],
|
|
21
20
|
upgrade?: boolean,
|
|
22
|
-
store?: string,
|
|
23
|
-
extensionsModuleName?: string,
|
|
24
|
-
queuesModuleName?: string,
|
|
25
|
-
dialersModuleName?: string,
|
|
26
21
|
serverFetchStrategy?: string,
|
|
27
22
|
serverType?: number,
|
|
28
23
|
useLogger?: boolean,
|
|
@@ -32,17 +27,14 @@ export interface EventsSdkOptions {
|
|
|
32
27
|
loggerConnectOptions?: LoggerConnectOptions,
|
|
33
28
|
email: string,
|
|
34
29
|
password: string,
|
|
35
|
-
username: string
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
export enum Environment {
|
|
39
|
-
BROWSER = 'browser',
|
|
40
|
-
CHROME_EXTENSION = 'chrome-extension'
|
|
30
|
+
username: string,
|
|
41
31
|
}
|
|
42
32
|
|
|
43
33
|
export interface Server {
|
|
44
34
|
Priority: number,
|
|
45
|
-
Domain: string
|
|
35
|
+
Domain: string,
|
|
36
|
+
URLID: number,
|
|
37
|
+
Version: string,
|
|
46
38
|
}
|
|
47
39
|
|
|
48
40
|
export interface LoggerConfig {
|
|
@@ -74,4 +66,4 @@ export enum ServerParameter {
|
|
|
74
66
|
DEFAULT = 'default',
|
|
75
67
|
NEXT = 'next',
|
|
76
68
|
PREVIOUS = 'previous'
|
|
77
|
-
}
|
|
69
|
+
}
|
|
@@ -2,9 +2,10 @@ import { ManagerOptions, SocketOptions } from 'socket.io-client'
|
|
|
2
2
|
import EventsSdkClass from '@/classes/events-sdk/events-sdk.class'
|
|
3
3
|
import sockets, { TypedSocketIo } from '@/classes/socket-io/versions'
|
|
4
4
|
import { SocketTyped } from '@/types/socket'
|
|
5
|
-
import {
|
|
5
|
+
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
|
+
import { StorageClass } from '@/classes/storage/storage.class'
|
|
8
9
|
|
|
9
10
|
export class SocketIoClass{
|
|
10
11
|
constructor (private readonly eventsSdkClass: EventsSdkClass) {
|
|
@@ -125,12 +126,7 @@ export class SocketIoClass{
|
|
|
125
126
|
this.io = undefined
|
|
126
127
|
}
|
|
127
128
|
|
|
128
|
-
|
|
129
|
-
window.sessionStorage.clear()
|
|
130
|
-
}
|
|
131
|
-
if (this.eventsSdkClass.options.environment === Environment.CHROME_EXTENSION && chrome) {
|
|
132
|
-
chrome.storage.session.clear()
|
|
133
|
-
}
|
|
129
|
+
StorageClass.clearSessionStorage()
|
|
134
130
|
}
|
|
135
131
|
|
|
136
132
|
private onKeepAliveResponse (data: KeepAliveResponseEvent) {
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { LoginSessionData } from '@/types/auth'
|
|
2
|
+
|
|
3
|
+
export class StorageClass{
|
|
4
|
+
public static async getSessionStorageDataByKey (key: string): Promise<LoginSessionData | undefined> {
|
|
5
|
+
if (typeof chrome !== 'undefined' && typeof chrome.storage !== 'undefined') {
|
|
6
|
+
const loginSessionKey = await chrome.storage.session.get(key)
|
|
7
|
+
|
|
8
|
+
if (loginSessionKey[key]) {
|
|
9
|
+
return JSON.parse(loginSessionKey[key])
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
if (typeof window !== 'undefined') {
|
|
14
|
+
const loginSessionKey = window.sessionStorage.getItem(key)
|
|
15
|
+
|
|
16
|
+
if (loginSessionKey) {
|
|
17
|
+
return JSON.parse(loginSessionKey)
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
public static async updateSessionStorageKey (key: string, storageData: LoginSessionData) {
|
|
23
|
+
if (typeof chrome !== 'undefined' && typeof chrome.storage !== 'undefined') {
|
|
24
|
+
await chrome.storage.session.set({
|
|
25
|
+
[key]: JSON.stringify(storageData)
|
|
26
|
+
})
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
if (typeof window !== 'undefined') {
|
|
30
|
+
window.sessionStorage.setItem(key, JSON.stringify(storageData))
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
public static clearSessionStorage () {
|
|
35
|
+
if (typeof chrome !== 'undefined' && typeof chrome.storage !== 'undefined') {
|
|
36
|
+
chrome.storage.session.clear()
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
if (typeof window !== 'undefined') {
|
|
40
|
+
window.sessionStorage.clear()
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
import EventsSdkClass from '@/classes/events-sdk/events-sdk.class'
|
|
2
|
-
import { Environment } from '@/classes/events-sdk/events-sdk.types'
|
|
3
2
|
import { EventsEnum } from '@/enum/events.enum'
|
|
4
3
|
|
|
5
|
-
export {
|
|
6
|
-
|
|
7
|
-
EventsEnum
|
|
8
|
-
}
|
|
4
|
+
export { EventsEnum }
|
|
5
|
+
|
|
9
6
|
export default EventsSdkClass
|
package/src/types/auth.d.ts
CHANGED
|
@@ -1,11 +1,31 @@
|
|
|
1
|
+
import { Server } from '@/classes/events-sdk/events-sdk.types'
|
|
2
|
+
import { LoginType } from '@/enum/auth.enum'
|
|
3
|
+
|
|
1
4
|
export interface LoginSessionPayload {
|
|
2
5
|
token: string,
|
|
3
6
|
email: string,
|
|
4
|
-
username: string,
|
|
5
7
|
password: string
|
|
6
8
|
}
|
|
7
9
|
|
|
8
|
-
export interface
|
|
10
|
+
export interface ExternalLoginRequestBody {
|
|
11
|
+
identityType: LoginType,
|
|
12
|
+
username?: string,
|
|
13
|
+
password?: string,
|
|
14
|
+
token?: string
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
interface ExternalLoginResponseData {
|
|
18
|
+
AccessToken: string,
|
|
19
|
+
RefreshToken: string
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export interface ExternalLoginResponse {
|
|
23
|
+
StatusCode: number,
|
|
24
|
+
Status: string,
|
|
25
|
+
Data: ExternalLoginResponseData
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export interface Socket {
|
|
9
29
|
Client: string,
|
|
10
30
|
PersonId: number,
|
|
11
31
|
RefreshToken: string,
|
|
@@ -15,4 +35,15 @@ export interface LoginSessionData {
|
|
|
15
35
|
URLList: string[],
|
|
16
36
|
Url: string,
|
|
17
37
|
Version: string
|
|
18
|
-
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export interface Settings {
|
|
41
|
+
IdentityCode: string,
|
|
42
|
+
IdentityCodeExpiry: Date,
|
|
43
|
+
PersonID: number,
|
|
44
|
+
PersonType: number,
|
|
45
|
+
ExtensionMonitorID: number,
|
|
46
|
+
MonitorList: Server[]
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export interface LoginSessionData extends Settings, ExternalLoginResponseData {}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import AuthClass from '@/classes/auth/auth.class'
|
|
2
|
-
import { eventsSdkDefaultOptions } from '@/classes/events-sdk/events-sdk-default-options'
|
|
3
|
-
import EventsSdkClass from '@/classes/events-sdk/events-sdk.class'
|
|
4
|
-
|
|
5
|
-
describe('AuthClass', () => {
|
|
6
|
-
const sdk = new EventsSdkClass(eventsSdkDefaultOptions)
|
|
7
|
-
|
|
8
|
-
const authClass = new AuthClass(sdk)
|
|
9
|
-
|
|
10
|
-
it('should be cypher', () => {
|
|
11
|
-
const key = authClass.login(eventsSdkDefaultOptions)
|
|
12
|
-
expect(typeof key).toBe('string')
|
|
13
|
-
})
|
|
14
|
-
})
|