asma-helpers 0.2.11 → 0.2.13
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/.prettierrc +15 -15
- package/.vscode/settings.json +39 -39
- package/README.md +0 -0
- package/lib/clients/srvAuth.d.ts +1 -1
- package/lib/clients/srvAuth.js +6 -6
- package/lib/global.d.ts +39 -39
- package/lib/global.js +4 -4
- package/lib/helpers/CapitalizeFistLetter.d.ts +2 -2
- package/lib/helpers/CapitalizeFistLetter.js +6 -6
- package/lib/helpers/Config.d.ts +5 -5
- package/lib/helpers/Config.js +44 -44
- package/lib/helpers/EnvironmentToOperateTypes.d.ts +7 -7
- package/lib/helpers/EnvironmentToOperateTypes.js +8 -8
- package/lib/helpers/EnvironmentsUrls.d.ts +93 -81
- package/lib/helpers/EnvironmentsUrls.d.ts.map +1 -1
- package/lib/helpers/EnvironmentsUrls.js +89 -79
- package/lib/helpers/EnvironmentsUrls.js.map +1 -1
- package/lib/helpers/FormatNumberConstants.d.ts +24 -24
- package/lib/helpers/FormatNumberConstants.js +40 -40
- package/lib/helpers/InitializeIDBListenersOnMstSnapshots.d.ts +1 -1
- package/lib/helpers/InitializeIDBListenersOnMstSnapshots.js +49 -49
- package/lib/helpers/InitializeIDBListenersOnMstSnapshotsThenCatch.d.ts +8 -8
- package/lib/helpers/InitializeIDBListenersOnMstSnapshotsThenCatch.js +68 -68
- package/lib/helpers/IsAdcuris.d.ts +2 -2
- package/lib/helpers/IsAdcuris.js +4 -4
- package/lib/helpers/IsNotEmpty.d.ts +1 -1
- package/lib/helpers/IsNotEmpty.js +3 -3
- package/lib/helpers/NorwegianPostalCodes.d.ts +8 -8
- package/lib/helpers/NorwegianPostalCodes.js +3 -3
- package/lib/helpers/ProcessServerError.d.ts +2 -2
- package/lib/helpers/ProcessServerError.js +100 -100
- package/lib/helpers/base64ToFile.d.ts +1 -1
- package/lib/helpers/base64ToFile.js +8 -8
- package/lib/helpers/clearCacheData.d.ts +1 -1
- package/lib/helpers/clearCacheData.js +12 -12
- package/lib/helpers/generateEnvConfigsBindings.d.ts +30 -28
- package/lib/helpers/generateEnvConfigsBindings.d.ts.map +1 -1
- package/lib/helpers/generateEnvConfigsBindings.js +48 -48
- package/lib/helpers/generateGenqlClient.d.ts +18 -18
- package/lib/helpers/generateGenqlClient.js +56 -56
- package/lib/helpers/generateSrvAuthBindings.d.ts +33 -33
- package/lib/helpers/generateSrvAuthBindings.js +163 -163
- package/lib/helpers/getGqlOperationName.d.ts +1 -1
- package/lib/helpers/getGqlOperationName.js +15 -15
- package/lib/helpers/getSubdomain.d.ts +3 -3
- package/lib/helpers/getSubdomain.js +27 -27
- package/lib/helpers/isValidUrl.d.ts +1 -1
- package/lib/helpers/isValidUrl.js +9 -9
- package/lib/helpers/parseJwt.d.ts +1 -1
- package/lib/helpers/parseJwt.js +7 -7
- package/lib/helpers/userTypingSignal.d.ts +4 -4
- package/lib/helpers/userTypingSignal.js +32 -32
- package/lib/index.d.ts +27 -27
- package/lib/index.js +25 -25
- package/lib/interfaces/api/advoca/ISaveToDataBase.d.ts +16 -16
- package/lib/interfaces/api/advoca/ISaveToDataBase.js +1 -1
- package/lib/interfaces/api/advoca/IUploadedDocument.d.ts +26 -26
- package/lib/interfaces/api/advoca/IUploadedDocument.js +1 -1
- package/lib/interfaces/enums.d.ts +50 -50
- package/lib/interfaces/enums.js +59 -59
- package/lib/utility/fetch.d.ts +1 -1
- package/lib/utility/fetch.js +5 -5
- package/package.json +30 -30
- package/src/clients/srvAuth.ts +6 -6
- package/src/global.ts +45 -45
- package/src/helpers/CapitalizeFistLetter.ts +7 -7
- package/src/helpers/Config.ts +58 -58
- package/src/helpers/EnvironmentToOperateTypes.ts +6 -6
- package/src/helpers/EnvironmentsUrls.ts +102 -92
- package/src/helpers/FormatNumberConstants.ts +41 -41
- package/src/helpers/InitializeIDBListenersOnMstSnapshots.ts +62 -62
- package/src/helpers/InitializeIDBListenersOnMstSnapshotsThenCatch.ts +82 -82
- package/src/helpers/IsAdcuris.ts +4 -4
- package/src/helpers/IsNotEmpty.ts +2 -2
- package/src/helpers/NorwegianPostalCodes.ts +6 -6
- package/src/helpers/ProcessServerError.ts +92 -92
- package/src/helpers/base64ToFile.ts +9 -9
- package/src/helpers/clearCacheData.ts +15 -15
- package/src/helpers/generateEnvConfigsBindings.ts +82 -82
- package/src/helpers/generateGenqlClient.ts +85 -85
- package/src/helpers/generateSrvAuthBindings.ts +215 -215
- package/src/helpers/getGqlOperationName.ts +20 -20
- package/src/helpers/getSubdomain.ts +40 -40
- package/src/helpers/isValidUrl.ts +12 -12
- package/src/helpers/parseJwt.ts +10 -10
- package/src/index.ts +33 -33
- package/src/interfaces/api/advoca/ISaveToDataBase.ts +17 -17
- package/src/interfaces/api/advoca/IUploadedDocument.ts +23 -23
- package/src/interfaces/enums.ts +56 -56
- package/src/utility/fetch.ts +9 -9
- package/tsconfig.json +84 -84
|
@@ -1,215 +1,215 @@
|
|
|
1
|
-
import type { feature_names_enum } from 'asma-genql-directory/lib'
|
|
2
|
-
import axios, { AxiosRequestConfig, AxiosResponse, ResponseType } from 'axios'
|
|
3
|
-
import { EnvironmentEnums, parseJwt } from '..'
|
|
4
|
-
/* export interface IGenerateSRVAuthBindings extends ReturnType<typeof generateSrvAuthBindings> {} */ /*{
|
|
5
|
-
isJwtValid: () => boolean
|
|
6
|
-
signin(url: string, headers?: Record<string, string>): Promise<{ token: string }>
|
|
7
|
-
srvAuthGet<R>(url: string, headers?: Record<string, string>): Promise<AxiosResponse<R, any>>
|
|
8
|
-
signoutAuth(): Promise<void>
|
|
9
|
-
setReqConfig<T = unknown>(data?: T, responseType?: ResponseType): Promise<AxiosRequestConfig>
|
|
10
|
-
getJwtTokenAsync(): Promise<string>
|
|
11
|
-
getNewJwtToken(): Promise<string>
|
|
12
|
-
getUserId(): string
|
|
13
|
-
getParsedJwt<R = { user_id: string; exp: number }>(): R | undefined
|
|
14
|
-
getJwtToken(): string
|
|
15
|
-
accessTokenHasExpired(): boolean
|
|
16
|
-
} */
|
|
17
|
-
export function generateSrvAuthBindings(
|
|
18
|
-
SRV_AUTH: () => string,
|
|
19
|
-
DEVELOPMENT: () => boolean,
|
|
20
|
-
EnvironmentToOperateFn: () => string,
|
|
21
|
-
logout?: () => void,
|
|
22
|
-
) {
|
|
23
|
-
if (window.__ASMA__SHELL__?.auth_bindings) {
|
|
24
|
-
return window.__ASMA__SHELL__.auth_bindings as typeof auth_bindings
|
|
25
|
-
}
|
|
26
|
-
let jwtToken = ''
|
|
27
|
-
|
|
28
|
-
let features: Set<feature_names_enum> | undefined
|
|
29
|
-
|
|
30
|
-
let parsed_jwt: any | undefined
|
|
31
|
-
|
|
32
|
-
let fetchJwtPromise: Promise<{
|
|
33
|
-
data: { message: string; token?: string; features?: feature_names_enum[]; errors: { message: string }[] }
|
|
34
|
-
}> | null = null
|
|
35
|
-
|
|
36
|
-
const isJwtInvalid = () => (jwtToken && accessTokenHasExpired()) || !jwtToken
|
|
37
|
-
|
|
38
|
-
const isJwtValid = () => !isJwtInvalid()
|
|
39
|
-
|
|
40
|
-
async function srvAuthGet<R>(url: string, headers?: Record<string, string>) {
|
|
41
|
-
if (DEVELOPMENT() && EnvironmentToOperateFn()) {
|
|
42
|
-
if (EnvironmentToOperateFn() in EnvironmentEnums) {
|
|
43
|
-
url = `${url}&env=${EnvironmentToOperateFn()}`
|
|
44
|
-
|
|
45
|
-
url = url.includes('&') && !url.includes('?') ? url.replace('&', '?') : url
|
|
46
|
-
} else {
|
|
47
|
-
console.warn(
|
|
48
|
-
'EnvironmentToOperateFn() is not a valid EnvironmentEnums',
|
|
49
|
-
'shall be one of:',
|
|
50
|
-
EnvironmentEnums,
|
|
51
|
-
'actual value:',
|
|
52
|
-
EnvironmentToOperateFn(),
|
|
53
|
-
)
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
return axios.get<unknown, AxiosResponse<R>>(`${SRV_AUTH()}${url}`, {
|
|
58
|
-
headers: {
|
|
59
|
-
...headers,
|
|
60
|
-
'asma-origin': window.location.origin,
|
|
61
|
-
},
|
|
62
|
-
withCredentials: true,
|
|
63
|
-
})
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
function accessTokenHasExpired(): boolean {
|
|
67
|
-
const tokenObj = getParsedJwt()
|
|
68
|
-
|
|
69
|
-
const accessTokenExpDate = tokenObj?.exp || 0
|
|
70
|
-
|
|
71
|
-
const nowTime = Math.floor(new Date().getTime() / 1000)
|
|
72
|
-
|
|
73
|
-
//set exp time -20sec for token to be refreshed early
|
|
74
|
-
return accessTokenExpDate - 10 <= nowTime
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
async function signin(url: string, headers?: Record<string, string>) {
|
|
78
|
-
const { data } = await srvAuthGet<{ token: string; features: feature_names_enum[] }>(url, headers)
|
|
79
|
-
|
|
80
|
-
setAuthData(data)
|
|
81
|
-
|
|
82
|
-
return data
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
async function signoutAuth() {
|
|
86
|
-
setAuthData({ token: '' })
|
|
87
|
-
await srvAuthGet('/signout')
|
|
88
|
-
}
|
|
89
|
-
function getUserId(): string {
|
|
90
|
-
return getParsedJwt()?.['user_id'] || '-1'
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
function setAuthData(data: { token: string; features?: feature_names_enum[] }) {
|
|
94
|
-
jwtToken = data.token
|
|
95
|
-
features = new Set(data.features)
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
function getJwtToken() {
|
|
99
|
-
return jwtToken
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
async function getJwtTokenAsync() {
|
|
103
|
-
if (isJwtInvalid()) {
|
|
104
|
-
const new_jwt = await getNewJwtToken()
|
|
105
|
-
|
|
106
|
-
return new_jwt
|
|
107
|
-
} else {
|
|
108
|
-
return jwtToken
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
async function setReqConfig<T = unknown>(data?: T, responseType?: ResponseType): Promise<AxiosRequestConfig> {
|
|
113
|
-
const token = await getJwtTokenAsync()
|
|
114
|
-
|
|
115
|
-
const res: AxiosRequestConfig = {
|
|
116
|
-
data: data,
|
|
117
|
-
responseType: responseType,
|
|
118
|
-
headers: {},
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
if (token) {
|
|
122
|
-
if (!res.headers) {
|
|
123
|
-
res.headers = {}
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
res.headers['Authorization'] = `Bearer ${token}`
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
return res
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
async function getNewJwtToken() {
|
|
133
|
-
try {
|
|
134
|
-
if (!fetchJwtPromise) {
|
|
135
|
-
fetchJwtPromise = srvAuthGet('/token')
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
const { data } = await fetchJwtPromise
|
|
139
|
-
|
|
140
|
-
if (!data || data.errors || data.message != 'Success') {
|
|
141
|
-
logout?.() || signoutAuth()
|
|
142
|
-
}
|
|
143
|
-
if (!data.token) {
|
|
144
|
-
throw new Error('Token is not present in the result')
|
|
145
|
-
}
|
|
146
|
-
setAuthData({ token: data.token || '', features: data.features || [] })
|
|
147
|
-
|
|
148
|
-
fetchJwtPromise = null
|
|
149
|
-
|
|
150
|
-
return jwtToken
|
|
151
|
-
} catch (error) {
|
|
152
|
-
logout?.() || signoutAuth()
|
|
153
|
-
//signoutAuth()
|
|
154
|
-
|
|
155
|
-
fetchJwtPromise = null
|
|
156
|
-
|
|
157
|
-
console.error(error)
|
|
158
|
-
|
|
159
|
-
return jwtToken
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
function getParsedJwt<R = { user_id: string; exp: number }>(): R | undefined {
|
|
164
|
-
if (!parsed_jwt) {
|
|
165
|
-
parsed_jwt = parseJwt<R>(jwtToken)
|
|
166
|
-
}
|
|
167
|
-
return parsed_jwt
|
|
168
|
-
}
|
|
169
|
-
function getFeatures() {
|
|
170
|
-
return features
|
|
171
|
-
}
|
|
172
|
-
function hasFeature(featureName: feature_names_enum) {
|
|
173
|
-
return !!features?.has(featureName)
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
const auth_bindings = {
|
|
177
|
-
hasFeature,
|
|
178
|
-
getFeatures,
|
|
179
|
-
isJwtValid,
|
|
180
|
-
signin,
|
|
181
|
-
srvAuthGet,
|
|
182
|
-
signoutAuth,
|
|
183
|
-
setReqConfig,
|
|
184
|
-
getJwtTokenAsync,
|
|
185
|
-
getNewJwtToken,
|
|
186
|
-
getUserId,
|
|
187
|
-
getParsedJwt,
|
|
188
|
-
getJwtToken,
|
|
189
|
-
accessTokenHasExpired,
|
|
190
|
-
}
|
|
191
|
-
window.__ASMA__SHELL__ = window.__ASMA__SHELL__ || {}
|
|
192
|
-
|
|
193
|
-
window.__ASMA__SHELL__.auth_bindings = auth_bindings
|
|
194
|
-
|
|
195
|
-
return auth_bindings
|
|
196
|
-
}
|
|
197
|
-
/**
|
|
198
|
-
* @deprecated use generateSrvAuthBindings
|
|
199
|
-
* @param SRV_AUTH
|
|
200
|
-
* @param DEVELOPMENT
|
|
201
|
-
* @param ENVIRONMENT_TO_OPERATE
|
|
202
|
-
* @param logout
|
|
203
|
-
* @returns
|
|
204
|
-
*/
|
|
205
|
-
export function generateSrvAuthBindingsMicroApp(
|
|
206
|
-
SRV_AUTH: () => string,
|
|
207
|
-
DEVELOPMENT: () => boolean,
|
|
208
|
-
ENVIRONMENT_TO_OPERATE: () => EnvironmentEnums,
|
|
209
|
-
logout?: () => void,
|
|
210
|
-
) {
|
|
211
|
-
return (
|
|
212
|
-
window.__ASMA__SHELL__?.auth_bindings ||
|
|
213
|
-
generateSrvAuthBindings(SRV_AUTH, DEVELOPMENT, ENVIRONMENT_TO_OPERATE, logout)
|
|
214
|
-
)
|
|
215
|
-
}
|
|
1
|
+
import type { feature_names_enum } from 'asma-genql-directory/lib'
|
|
2
|
+
import axios, { AxiosRequestConfig, AxiosResponse, ResponseType } from 'axios'
|
|
3
|
+
import { EnvironmentEnums, parseJwt } from '..'
|
|
4
|
+
/* export interface IGenerateSRVAuthBindings extends ReturnType<typeof generateSrvAuthBindings> {} */ /*{
|
|
5
|
+
isJwtValid: () => boolean
|
|
6
|
+
signin(url: string, headers?: Record<string, string>): Promise<{ token: string }>
|
|
7
|
+
srvAuthGet<R>(url: string, headers?: Record<string, string>): Promise<AxiosResponse<R, any>>
|
|
8
|
+
signoutAuth(): Promise<void>
|
|
9
|
+
setReqConfig<T = unknown>(data?: T, responseType?: ResponseType): Promise<AxiosRequestConfig>
|
|
10
|
+
getJwtTokenAsync(): Promise<string>
|
|
11
|
+
getNewJwtToken(): Promise<string>
|
|
12
|
+
getUserId(): string
|
|
13
|
+
getParsedJwt<R = { user_id: string; exp: number }>(): R | undefined
|
|
14
|
+
getJwtToken(): string
|
|
15
|
+
accessTokenHasExpired(): boolean
|
|
16
|
+
} */
|
|
17
|
+
export function generateSrvAuthBindings(
|
|
18
|
+
SRV_AUTH: () => string,
|
|
19
|
+
DEVELOPMENT: () => boolean,
|
|
20
|
+
EnvironmentToOperateFn: () => string,
|
|
21
|
+
logout?: () => void,
|
|
22
|
+
) {
|
|
23
|
+
if (window.__ASMA__SHELL__?.auth_bindings) {
|
|
24
|
+
return window.__ASMA__SHELL__.auth_bindings as typeof auth_bindings
|
|
25
|
+
}
|
|
26
|
+
let jwtToken = ''
|
|
27
|
+
|
|
28
|
+
let features: Set<feature_names_enum> | undefined
|
|
29
|
+
|
|
30
|
+
let parsed_jwt: any | undefined
|
|
31
|
+
|
|
32
|
+
let fetchJwtPromise: Promise<{
|
|
33
|
+
data: { message: string; token?: string; features?: feature_names_enum[]; errors: { message: string }[] }
|
|
34
|
+
}> | null = null
|
|
35
|
+
|
|
36
|
+
const isJwtInvalid = () => (jwtToken && accessTokenHasExpired()) || !jwtToken
|
|
37
|
+
|
|
38
|
+
const isJwtValid = () => !isJwtInvalid()
|
|
39
|
+
|
|
40
|
+
async function srvAuthGet<R>(url: string, headers?: Record<string, string>) {
|
|
41
|
+
if (DEVELOPMENT() && EnvironmentToOperateFn()) {
|
|
42
|
+
if (EnvironmentToOperateFn() in EnvironmentEnums) {
|
|
43
|
+
url = `${url}&env=${EnvironmentToOperateFn()}`
|
|
44
|
+
|
|
45
|
+
url = url.includes('&') && !url.includes('?') ? url.replace('&', '?') : url
|
|
46
|
+
} else {
|
|
47
|
+
console.warn(
|
|
48
|
+
'EnvironmentToOperateFn() is not a valid EnvironmentEnums',
|
|
49
|
+
'shall be one of:',
|
|
50
|
+
EnvironmentEnums,
|
|
51
|
+
'actual value:',
|
|
52
|
+
EnvironmentToOperateFn(),
|
|
53
|
+
)
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
return axios.get<unknown, AxiosResponse<R>>(`${SRV_AUTH()}${url}`, {
|
|
58
|
+
headers: {
|
|
59
|
+
...headers,
|
|
60
|
+
'asma-origin': window.location.origin,
|
|
61
|
+
},
|
|
62
|
+
withCredentials: true,
|
|
63
|
+
})
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
function accessTokenHasExpired(): boolean {
|
|
67
|
+
const tokenObj = getParsedJwt()
|
|
68
|
+
|
|
69
|
+
const accessTokenExpDate = tokenObj?.exp || 0
|
|
70
|
+
|
|
71
|
+
const nowTime = Math.floor(new Date().getTime() / 1000)
|
|
72
|
+
|
|
73
|
+
//set exp time -20sec for token to be refreshed early
|
|
74
|
+
return accessTokenExpDate - 10 <= nowTime
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
async function signin(url: string, headers?: Record<string, string>) {
|
|
78
|
+
const { data } = await srvAuthGet<{ token: string; features: feature_names_enum[] }>(url, headers)
|
|
79
|
+
|
|
80
|
+
setAuthData(data)
|
|
81
|
+
|
|
82
|
+
return data
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
async function signoutAuth() {
|
|
86
|
+
setAuthData({ token: '' })
|
|
87
|
+
await srvAuthGet('/signout')
|
|
88
|
+
}
|
|
89
|
+
function getUserId(): string {
|
|
90
|
+
return getParsedJwt()?.['user_id'] || '-1'
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
function setAuthData(data: { token: string; features?: feature_names_enum[] }) {
|
|
94
|
+
jwtToken = data.token
|
|
95
|
+
features = new Set(data.features)
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
function getJwtToken() {
|
|
99
|
+
return jwtToken
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
async function getJwtTokenAsync() {
|
|
103
|
+
if (isJwtInvalid()) {
|
|
104
|
+
const new_jwt = await getNewJwtToken()
|
|
105
|
+
|
|
106
|
+
return new_jwt
|
|
107
|
+
} else {
|
|
108
|
+
return jwtToken
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
async function setReqConfig<T = unknown>(data?: T, responseType?: ResponseType): Promise<AxiosRequestConfig> {
|
|
113
|
+
const token = await getJwtTokenAsync()
|
|
114
|
+
|
|
115
|
+
const res: AxiosRequestConfig = {
|
|
116
|
+
data: data,
|
|
117
|
+
responseType: responseType,
|
|
118
|
+
headers: {},
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
if (token) {
|
|
122
|
+
if (!res.headers) {
|
|
123
|
+
res.headers = {}
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
res.headers['Authorization'] = `Bearer ${token}`
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
return res
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
async function getNewJwtToken() {
|
|
133
|
+
try {
|
|
134
|
+
if (!fetchJwtPromise) {
|
|
135
|
+
fetchJwtPromise = srvAuthGet('/token')
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
const { data } = await fetchJwtPromise
|
|
139
|
+
|
|
140
|
+
if (!data || data.errors || data.message != 'Success') {
|
|
141
|
+
logout?.() || signoutAuth()
|
|
142
|
+
}
|
|
143
|
+
if (!data.token) {
|
|
144
|
+
throw new Error('Token is not present in the result')
|
|
145
|
+
}
|
|
146
|
+
setAuthData({ token: data.token || '', features: data.features || [] })
|
|
147
|
+
|
|
148
|
+
fetchJwtPromise = null
|
|
149
|
+
|
|
150
|
+
return jwtToken
|
|
151
|
+
} catch (error) {
|
|
152
|
+
logout?.() || signoutAuth()
|
|
153
|
+
//signoutAuth()
|
|
154
|
+
|
|
155
|
+
fetchJwtPromise = null
|
|
156
|
+
|
|
157
|
+
console.error(error)
|
|
158
|
+
|
|
159
|
+
return jwtToken
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
function getParsedJwt<R = { user_id: string; exp: number }>(): R | undefined {
|
|
164
|
+
if (!parsed_jwt) {
|
|
165
|
+
parsed_jwt = parseJwt<R>(jwtToken)
|
|
166
|
+
}
|
|
167
|
+
return parsed_jwt
|
|
168
|
+
}
|
|
169
|
+
function getFeatures() {
|
|
170
|
+
return features
|
|
171
|
+
}
|
|
172
|
+
function hasFeature(featureName: feature_names_enum) {
|
|
173
|
+
return !!features?.has(featureName)
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
const auth_bindings = {
|
|
177
|
+
hasFeature,
|
|
178
|
+
getFeatures,
|
|
179
|
+
isJwtValid,
|
|
180
|
+
signin,
|
|
181
|
+
srvAuthGet,
|
|
182
|
+
signoutAuth,
|
|
183
|
+
setReqConfig,
|
|
184
|
+
getJwtTokenAsync,
|
|
185
|
+
getNewJwtToken,
|
|
186
|
+
getUserId,
|
|
187
|
+
getParsedJwt,
|
|
188
|
+
getJwtToken,
|
|
189
|
+
accessTokenHasExpired,
|
|
190
|
+
}
|
|
191
|
+
window.__ASMA__SHELL__ = window.__ASMA__SHELL__ || {}
|
|
192
|
+
|
|
193
|
+
window.__ASMA__SHELL__.auth_bindings = auth_bindings
|
|
194
|
+
|
|
195
|
+
return auth_bindings
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* @deprecated use generateSrvAuthBindings
|
|
199
|
+
* @param SRV_AUTH
|
|
200
|
+
* @param DEVELOPMENT
|
|
201
|
+
* @param ENVIRONMENT_TO_OPERATE
|
|
202
|
+
* @param logout
|
|
203
|
+
* @returns
|
|
204
|
+
*/
|
|
205
|
+
export function generateSrvAuthBindingsMicroApp(
|
|
206
|
+
SRV_AUTH: () => string,
|
|
207
|
+
DEVELOPMENT: () => boolean,
|
|
208
|
+
ENVIRONMENT_TO_OPERATE: () => EnvironmentEnums,
|
|
209
|
+
logout?: () => void,
|
|
210
|
+
) {
|
|
211
|
+
return (
|
|
212
|
+
window.__ASMA__SHELL__?.auth_bindings ||
|
|
213
|
+
generateSrvAuthBindings(SRV_AUTH, DEVELOPMENT, ENVIRONMENT_TO_OPERATE, logout)
|
|
214
|
+
)
|
|
215
|
+
}
|
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
export function getGqlOperationName(query: string): string | undefined {
|
|
2
|
-
const is_query = query.includes('query') ? 'query' : undefined
|
|
3
|
-
|
|
4
|
-
const is_mutation = query.includes('mutation') ? 'mutation' : undefined
|
|
5
|
-
|
|
6
|
-
const is_subscription = query.includes('subscription') ? 'subscription' : undefined
|
|
7
|
-
|
|
8
|
-
const split_word = is_query || is_mutation || is_subscription
|
|
9
|
-
|
|
10
|
-
if (!split_word) {
|
|
11
|
-
return undefined
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
let operationName = query?.split(split_word, 2)?.[1]?.split('{', 1)[0]?.split(' ')?.[1]?.trim()
|
|
15
|
-
|
|
16
|
-
if (operationName?.includes('(')) {
|
|
17
|
-
operationName = operationName.split('(', 1)[0]
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
return operationName
|
|
1
|
+
export function getGqlOperationName(query: string): string | undefined {
|
|
2
|
+
const is_query = query.includes('query') ? 'query' : undefined
|
|
3
|
+
|
|
4
|
+
const is_mutation = query.includes('mutation') ? 'mutation' : undefined
|
|
5
|
+
|
|
6
|
+
const is_subscription = query.includes('subscription') ? 'subscription' : undefined
|
|
7
|
+
|
|
8
|
+
const split_word = is_query || is_mutation || is_subscription
|
|
9
|
+
|
|
10
|
+
if (!split_word) {
|
|
11
|
+
return undefined
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
let operationName = query?.split(split_word, 2)?.[1]?.split('{', 1)[0]?.split(' ')?.[1]?.trim()
|
|
15
|
+
|
|
16
|
+
if (operationName?.includes('(')) {
|
|
17
|
+
operationName = operationName.split('(', 1)[0]
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
return operationName
|
|
21
21
|
}
|
|
@@ -1,41 +1,41 @@
|
|
|
1
|
-
function getSubdomain() {
|
|
2
|
-
const hostname_arr = window.location.hostname.split('.')// fretex-dfsf.advoca.no
|
|
3
|
-
|
|
4
|
-
let subdomain = ''
|
|
5
|
-
|
|
6
|
-
if (
|
|
7
|
-
hostname_arr.length === 3 &&
|
|
8
|
-
hostname_arr[0] &&
|
|
9
|
-
!['dev', 'test', 'stage', 'intern', 'www'].find((sub) => sub === hostname_arr[0])
|
|
10
|
-
) {
|
|
11
|
-
subdomain = hostname_arr[0]
|
|
12
|
-
|
|
13
|
-
const subdomain_arr = subdomain.split('-')
|
|
14
|
-
|
|
15
|
-
if (subdomain_arr.length === 2 && subdomain_arr[0]) {
|
|
16
|
-
subdomain = subdomain_arr[0]
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
return subdomain
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
export const subdomain = getSubdomain()
|
|
23
|
-
|
|
24
|
-
export function redirectFromSubdomainToDomain() {
|
|
25
|
-
const domain_hostname = `${createDomainUrlFromSubdomain()}${window.location.pathname}`
|
|
26
|
-
|
|
27
|
-
window.location.href = domain_hostname
|
|
28
|
-
|
|
29
|
-
return null
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
export function createDomainUrlFromSubdomain() {
|
|
33
|
-
let hostname = window.location.hostname.replace(subdomain, '')
|
|
34
|
-
|
|
35
|
-
;(hostname.startsWith('-') && (hostname = hostname.substring(1))) ||
|
|
36
|
-
(hostname.startsWith('.') && (hostname = 'www' + hostname))
|
|
37
|
-
|
|
38
|
-
const { port, protocol } = window.location
|
|
39
|
-
|
|
40
|
-
return protocol + '//' + hostname + (port ? `:${port}` : '')
|
|
1
|
+
function getSubdomain() {
|
|
2
|
+
const hostname_arr = window.location.hostname.split('.')// fretex-dfsf.advoca.no
|
|
3
|
+
|
|
4
|
+
let subdomain = ''
|
|
5
|
+
|
|
6
|
+
if (
|
|
7
|
+
hostname_arr.length === 3 &&
|
|
8
|
+
hostname_arr[0] &&
|
|
9
|
+
!['dev', 'test', 'stage', 'intern', 'www'].find((sub) => sub === hostname_arr[0])
|
|
10
|
+
) {
|
|
11
|
+
subdomain = hostname_arr[0]
|
|
12
|
+
|
|
13
|
+
const subdomain_arr = subdomain.split('-')
|
|
14
|
+
|
|
15
|
+
if (subdomain_arr.length === 2 && subdomain_arr[0]) {
|
|
16
|
+
subdomain = subdomain_arr[0]
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
return subdomain
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export const subdomain = getSubdomain()
|
|
23
|
+
|
|
24
|
+
export function redirectFromSubdomainToDomain() {
|
|
25
|
+
const domain_hostname = `${createDomainUrlFromSubdomain()}${window.location.pathname}`
|
|
26
|
+
|
|
27
|
+
window.location.href = domain_hostname
|
|
28
|
+
|
|
29
|
+
return null
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export function createDomainUrlFromSubdomain() {
|
|
33
|
+
let hostname = window.location.hostname.replace(subdomain, '')
|
|
34
|
+
|
|
35
|
+
;(hostname.startsWith('-') && (hostname = hostname.substring(1))) ||
|
|
36
|
+
(hostname.startsWith('.') && (hostname = 'www' + hostname))
|
|
37
|
+
|
|
38
|
+
const { port, protocol } = window.location
|
|
39
|
+
|
|
40
|
+
return protocol + '//' + hostname + (port ? `:${port}` : '')
|
|
41
41
|
}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
export function isValidUrl(urlString: string) {
|
|
2
|
-
const urlPattern = new RegExp(
|
|
3
|
-
'^(https?:\\/\\/)?' + // validate protocol
|
|
4
|
-
'((([a-z\\d]([a-z\\d-]*[a-z\\d])*)\\.)+[a-z]{2,}|' + // validate domain name
|
|
5
|
-
'((\\d{1,3}\\.){3}\\d{1,3}))' + // validate OR ip (v4) address
|
|
6
|
-
'(\\:\\d+)?(\\/[-a-z\\d%_.~+]*)*' + // validate port and path
|
|
7
|
-
'(\\?[;&a-z\\d%_.~+=-]*)?' + // validate query string
|
|
8
|
-
'(\\#[-a-z\\d_]*)?$',
|
|
9
|
-
'i',
|
|
10
|
-
)
|
|
11
|
-
return !!urlPattern.test(urlString)
|
|
12
|
-
}
|
|
1
|
+
export function isValidUrl(urlString: string) {
|
|
2
|
+
const urlPattern = new RegExp(
|
|
3
|
+
'^(https?:\\/\\/)?' + // validate protocol
|
|
4
|
+
'((([a-z\\d]([a-z\\d-]*[a-z\\d])*)\\.)+[a-z]{2,}|' + // validate domain name
|
|
5
|
+
'((\\d{1,3}\\.){3}\\d{1,3}))' + // validate OR ip (v4) address
|
|
6
|
+
'(\\:\\d+)?(\\/[-a-z\\d%_.~+]*)*' + // validate port and path
|
|
7
|
+
'(\\?[;&a-z\\d%_.~+=-]*)?' + // validate query string
|
|
8
|
+
'(\\#[-a-z\\d_]*)?$',
|
|
9
|
+
'i',
|
|
10
|
+
)
|
|
11
|
+
return !!urlPattern.test(urlString)
|
|
12
|
+
}
|
package/src/helpers/parseJwt.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
export function parseJwt<R>(jwtToken: string): R|undefined {
|
|
4
|
-
const base64Url = jwtToken?.split('.')[1]
|
|
5
|
-
|
|
6
|
-
if (base64Url === undefined) {
|
|
7
|
-
return {} as any
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
return JSON.parse(decodeURIComponent(escape(window.atob(base64Url))))
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
export function parseJwt<R>(jwtToken: string): R|undefined {
|
|
4
|
+
const base64Url = jwtToken?.split('.')[1]
|
|
5
|
+
|
|
6
|
+
if (base64Url === undefined) {
|
|
7
|
+
return {} as any
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
return JSON.parse(decodeURIComponent(escape(window.atob(base64Url))))
|
|
11
11
|
}
|