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.
Files changed (91) hide show
  1. package/.prettierrc +15 -15
  2. package/.vscode/settings.json +39 -39
  3. package/README.md +0 -0
  4. package/lib/clients/srvAuth.d.ts +1 -1
  5. package/lib/clients/srvAuth.js +6 -6
  6. package/lib/global.d.ts +39 -39
  7. package/lib/global.js +4 -4
  8. package/lib/helpers/CapitalizeFistLetter.d.ts +2 -2
  9. package/lib/helpers/CapitalizeFistLetter.js +6 -6
  10. package/lib/helpers/Config.d.ts +5 -5
  11. package/lib/helpers/Config.js +44 -44
  12. package/lib/helpers/EnvironmentToOperateTypes.d.ts +7 -7
  13. package/lib/helpers/EnvironmentToOperateTypes.js +8 -8
  14. package/lib/helpers/EnvironmentsUrls.d.ts +93 -81
  15. package/lib/helpers/EnvironmentsUrls.d.ts.map +1 -1
  16. package/lib/helpers/EnvironmentsUrls.js +89 -79
  17. package/lib/helpers/EnvironmentsUrls.js.map +1 -1
  18. package/lib/helpers/FormatNumberConstants.d.ts +24 -24
  19. package/lib/helpers/FormatNumberConstants.js +40 -40
  20. package/lib/helpers/InitializeIDBListenersOnMstSnapshots.d.ts +1 -1
  21. package/lib/helpers/InitializeIDBListenersOnMstSnapshots.js +49 -49
  22. package/lib/helpers/InitializeIDBListenersOnMstSnapshotsThenCatch.d.ts +8 -8
  23. package/lib/helpers/InitializeIDBListenersOnMstSnapshotsThenCatch.js +68 -68
  24. package/lib/helpers/IsAdcuris.d.ts +2 -2
  25. package/lib/helpers/IsAdcuris.js +4 -4
  26. package/lib/helpers/IsNotEmpty.d.ts +1 -1
  27. package/lib/helpers/IsNotEmpty.js +3 -3
  28. package/lib/helpers/NorwegianPostalCodes.d.ts +8 -8
  29. package/lib/helpers/NorwegianPostalCodes.js +3 -3
  30. package/lib/helpers/ProcessServerError.d.ts +2 -2
  31. package/lib/helpers/ProcessServerError.js +100 -100
  32. package/lib/helpers/base64ToFile.d.ts +1 -1
  33. package/lib/helpers/base64ToFile.js +8 -8
  34. package/lib/helpers/clearCacheData.d.ts +1 -1
  35. package/lib/helpers/clearCacheData.js +12 -12
  36. package/lib/helpers/generateEnvConfigsBindings.d.ts +30 -28
  37. package/lib/helpers/generateEnvConfigsBindings.d.ts.map +1 -1
  38. package/lib/helpers/generateEnvConfigsBindings.js +48 -48
  39. package/lib/helpers/generateGenqlClient.d.ts +18 -18
  40. package/lib/helpers/generateGenqlClient.js +56 -56
  41. package/lib/helpers/generateSrvAuthBindings.d.ts +33 -33
  42. package/lib/helpers/generateSrvAuthBindings.js +163 -163
  43. package/lib/helpers/getGqlOperationName.d.ts +1 -1
  44. package/lib/helpers/getGqlOperationName.js +15 -15
  45. package/lib/helpers/getSubdomain.d.ts +3 -3
  46. package/lib/helpers/getSubdomain.js +27 -27
  47. package/lib/helpers/isValidUrl.d.ts +1 -1
  48. package/lib/helpers/isValidUrl.js +9 -9
  49. package/lib/helpers/parseJwt.d.ts +1 -1
  50. package/lib/helpers/parseJwt.js +7 -7
  51. package/lib/helpers/userTypingSignal.d.ts +4 -4
  52. package/lib/helpers/userTypingSignal.js +32 -32
  53. package/lib/index.d.ts +27 -27
  54. package/lib/index.js +25 -25
  55. package/lib/interfaces/api/advoca/ISaveToDataBase.d.ts +16 -16
  56. package/lib/interfaces/api/advoca/ISaveToDataBase.js +1 -1
  57. package/lib/interfaces/api/advoca/IUploadedDocument.d.ts +26 -26
  58. package/lib/interfaces/api/advoca/IUploadedDocument.js +1 -1
  59. package/lib/interfaces/enums.d.ts +50 -50
  60. package/lib/interfaces/enums.js +59 -59
  61. package/lib/utility/fetch.d.ts +1 -1
  62. package/lib/utility/fetch.js +5 -5
  63. package/package.json +30 -30
  64. package/src/clients/srvAuth.ts +6 -6
  65. package/src/global.ts +45 -45
  66. package/src/helpers/CapitalizeFistLetter.ts +7 -7
  67. package/src/helpers/Config.ts +58 -58
  68. package/src/helpers/EnvironmentToOperateTypes.ts +6 -6
  69. package/src/helpers/EnvironmentsUrls.ts +102 -92
  70. package/src/helpers/FormatNumberConstants.ts +41 -41
  71. package/src/helpers/InitializeIDBListenersOnMstSnapshots.ts +62 -62
  72. package/src/helpers/InitializeIDBListenersOnMstSnapshotsThenCatch.ts +82 -82
  73. package/src/helpers/IsAdcuris.ts +4 -4
  74. package/src/helpers/IsNotEmpty.ts +2 -2
  75. package/src/helpers/NorwegianPostalCodes.ts +6 -6
  76. package/src/helpers/ProcessServerError.ts +92 -92
  77. package/src/helpers/base64ToFile.ts +9 -9
  78. package/src/helpers/clearCacheData.ts +15 -15
  79. package/src/helpers/generateEnvConfigsBindings.ts +82 -82
  80. package/src/helpers/generateGenqlClient.ts +85 -85
  81. package/src/helpers/generateSrvAuthBindings.ts +215 -215
  82. package/src/helpers/getGqlOperationName.ts +20 -20
  83. package/src/helpers/getSubdomain.ts +40 -40
  84. package/src/helpers/isValidUrl.ts +12 -12
  85. package/src/helpers/parseJwt.ts +10 -10
  86. package/src/index.ts +33 -33
  87. package/src/interfaces/api/advoca/ISaveToDataBase.ts +17 -17
  88. package/src/interfaces/api/advoca/IUploadedDocument.ts +23 -23
  89. package/src/interfaces/enums.ts +56 -56
  90. package/src/utility/fetch.ts +9 -9
  91. 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
+ }
@@ -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
  }