asma-helpers 0.2.12 → 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 -93
- package/lib/helpers/EnvironmentsUrls.js +89 -89
- 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 -30
- 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 -102
- 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,92 +1,92 @@
|
|
|
1
|
-
export function processServerError(error: string | Record<string, any>): string {
|
|
2
|
-
console['error'](error)
|
|
3
|
-
|
|
4
|
-
let errorMessage = getServerErrorMessage(error)
|
|
5
|
-
|
|
6
|
-
/* if (i18n[errorMessage]) {
|
|
7
|
-
;(errorMessage = (window as any).strings)[errorMessage]
|
|
8
|
-
} */
|
|
9
|
-
|
|
10
|
-
//showErrorMessage(operationName || 'Error', errorMessage)
|
|
11
|
-
return errorMessage
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
export function getServerErrorMessage(error: Record<string, any> | string): string {
|
|
15
|
-
if (typeof error == 'string') {
|
|
16
|
-
return error
|
|
17
|
-
} else if (error['data'] && error['data']['Message']) {
|
|
18
|
-
return error['data']['Message']
|
|
19
|
-
}
|
|
20
|
-
if (Array.isArray(error)) {
|
|
21
|
-
return getArrayErrorsMessage(error)
|
|
22
|
-
}
|
|
23
|
-
if (Array.isArray(error?.['errors'])) {
|
|
24
|
-
return getArrayErrorsMessage(error['errors'])
|
|
25
|
-
}
|
|
26
|
-
//graphql
|
|
27
|
-
else if (error['bodyText']) {
|
|
28
|
-
return error['bodyText']
|
|
29
|
-
} else if (error['response'] && error['response'].data) {
|
|
30
|
-
const data = error['response'].data?.['error'] ?? error['response'].data
|
|
31
|
-
|
|
32
|
-
if (typeof data == 'string') {
|
|
33
|
-
return data
|
|
34
|
-
} else if (data?.constructor === Object) {
|
|
35
|
-
const keys = Object.keys(data)
|
|
36
|
-
|
|
37
|
-
if (keys[0]) {
|
|
38
|
-
const objKey = keys[0]
|
|
39
|
-
|
|
40
|
-
if (data[objKey]['message']) {
|
|
41
|
-
return data[objKey]['message']
|
|
42
|
-
} else if (data[objKey][0] && data[objKey][0]['message']) {
|
|
43
|
-
return data[objKey][0]['message']
|
|
44
|
-
} else if (typeof data[objKey] == 'string') {
|
|
45
|
-
return data[objKey]
|
|
46
|
-
} else if (data[objKey].constructor === Object) {
|
|
47
|
-
const childKeys = Object.keys(data[objKey])
|
|
48
|
-
|
|
49
|
-
if (childKeys[0]) {
|
|
50
|
-
const objKey2 = childKeys[0]
|
|
51
|
-
|
|
52
|
-
return `${objKey2}: ${data[objKey][objKey2]}`
|
|
53
|
-
} else {
|
|
54
|
-
return 'Missing child field: empty keys'
|
|
55
|
-
}
|
|
56
|
-
} else if (data[objKey].constructor === Array) {
|
|
57
|
-
if (data[objKey][0] === 'validation.required') {
|
|
58
|
-
return `window.strings.field_is_required ${objKey}`
|
|
59
|
-
} else {
|
|
60
|
-
return `${objKey}: ${data[objKey][0]}`
|
|
61
|
-
}
|
|
62
|
-
} else {
|
|
63
|
-
return 'Missing field: Message not available'
|
|
64
|
-
}
|
|
65
|
-
} else {
|
|
66
|
-
return 'Missing field: Response keys are empty'
|
|
67
|
-
}
|
|
68
|
-
} else {
|
|
69
|
-
return 'Missing field: data type not processed'
|
|
70
|
-
}
|
|
71
|
-
} else if (error['message']) {
|
|
72
|
-
return error['message']
|
|
73
|
-
} else if (error['error']) {
|
|
74
|
-
return error['error']
|
|
75
|
-
} else if (error?.['request']?.['response']) {
|
|
76
|
-
return error['request']['response']
|
|
77
|
-
} else {
|
|
78
|
-
return "Missing field: Couldn't process error"
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
function getArrayErrorsMessage(error: Record<string, unknown>[]): string {
|
|
83
|
-
const porcessed_error = error
|
|
84
|
-
.map((err) => {
|
|
85
|
-
if ('message' in err) {
|
|
86
|
-
return err['message'] as string
|
|
87
|
-
} else return ''
|
|
88
|
-
})
|
|
89
|
-
.join()
|
|
90
|
-
|
|
91
|
-
return porcessed_error ?? 'No message field found! plase check logs'
|
|
92
|
-
}
|
|
1
|
+
export function processServerError(error: string | Record<string, any>): string {
|
|
2
|
+
console['error'](error)
|
|
3
|
+
|
|
4
|
+
let errorMessage = getServerErrorMessage(error)
|
|
5
|
+
|
|
6
|
+
/* if (i18n[errorMessage]) {
|
|
7
|
+
;(errorMessage = (window as any).strings)[errorMessage]
|
|
8
|
+
} */
|
|
9
|
+
|
|
10
|
+
//showErrorMessage(operationName || 'Error', errorMessage)
|
|
11
|
+
return errorMessage
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export function getServerErrorMessage(error: Record<string, any> | string): string {
|
|
15
|
+
if (typeof error == 'string') {
|
|
16
|
+
return error
|
|
17
|
+
} else if (error['data'] && error['data']['Message']) {
|
|
18
|
+
return error['data']['Message']
|
|
19
|
+
}
|
|
20
|
+
if (Array.isArray(error)) {
|
|
21
|
+
return getArrayErrorsMessage(error)
|
|
22
|
+
}
|
|
23
|
+
if (Array.isArray(error?.['errors'])) {
|
|
24
|
+
return getArrayErrorsMessage(error['errors'])
|
|
25
|
+
}
|
|
26
|
+
//graphql
|
|
27
|
+
else if (error['bodyText']) {
|
|
28
|
+
return error['bodyText']
|
|
29
|
+
} else if (error['response'] && error['response'].data) {
|
|
30
|
+
const data = error['response'].data?.['error'] ?? error['response'].data
|
|
31
|
+
|
|
32
|
+
if (typeof data == 'string') {
|
|
33
|
+
return data
|
|
34
|
+
} else if (data?.constructor === Object) {
|
|
35
|
+
const keys = Object.keys(data)
|
|
36
|
+
|
|
37
|
+
if (keys[0]) {
|
|
38
|
+
const objKey = keys[0]
|
|
39
|
+
|
|
40
|
+
if (data[objKey]['message']) {
|
|
41
|
+
return data[objKey]['message']
|
|
42
|
+
} else if (data[objKey][0] && data[objKey][0]['message']) {
|
|
43
|
+
return data[objKey][0]['message']
|
|
44
|
+
} else if (typeof data[objKey] == 'string') {
|
|
45
|
+
return data[objKey]
|
|
46
|
+
} else if (data[objKey].constructor === Object) {
|
|
47
|
+
const childKeys = Object.keys(data[objKey])
|
|
48
|
+
|
|
49
|
+
if (childKeys[0]) {
|
|
50
|
+
const objKey2 = childKeys[0]
|
|
51
|
+
|
|
52
|
+
return `${objKey2}: ${data[objKey][objKey2]}`
|
|
53
|
+
} else {
|
|
54
|
+
return 'Missing child field: empty keys'
|
|
55
|
+
}
|
|
56
|
+
} else if (data[objKey].constructor === Array) {
|
|
57
|
+
if (data[objKey][0] === 'validation.required') {
|
|
58
|
+
return `window.strings.field_is_required ${objKey}`
|
|
59
|
+
} else {
|
|
60
|
+
return `${objKey}: ${data[objKey][0]}`
|
|
61
|
+
}
|
|
62
|
+
} else {
|
|
63
|
+
return 'Missing field: Message not available'
|
|
64
|
+
}
|
|
65
|
+
} else {
|
|
66
|
+
return 'Missing field: Response keys are empty'
|
|
67
|
+
}
|
|
68
|
+
} else {
|
|
69
|
+
return 'Missing field: data type not processed'
|
|
70
|
+
}
|
|
71
|
+
} else if (error['message']) {
|
|
72
|
+
return error['message']
|
|
73
|
+
} else if (error['error']) {
|
|
74
|
+
return error['error']
|
|
75
|
+
} else if (error?.['request']?.['response']) {
|
|
76
|
+
return error['request']['response']
|
|
77
|
+
} else {
|
|
78
|
+
return "Missing field: Couldn't process error"
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
function getArrayErrorsMessage(error: Record<string, unknown>[]): string {
|
|
83
|
+
const porcessed_error = error
|
|
84
|
+
.map((err) => {
|
|
85
|
+
if ('message' in err) {
|
|
86
|
+
return err['message'] as string
|
|
87
|
+
} else return ''
|
|
88
|
+
})
|
|
89
|
+
.join()
|
|
90
|
+
|
|
91
|
+
return porcessed_error ?? 'No message field found! plase check logs'
|
|
92
|
+
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
export function base64toFile(b64Data: string, name: string, type = 'application/pdf') {
|
|
2
|
-
const bytes = window.atob(b64Data)
|
|
3
|
-
const writer = new Uint8Array(new ArrayBuffer(bytes.length))
|
|
4
|
-
|
|
5
|
-
for (let i = 0; i < bytes.length; i++) {
|
|
6
|
-
writer[i] = bytes.charCodeAt(i)
|
|
7
|
-
}
|
|
8
|
-
return new File([writer.buffer], name, { type })
|
|
9
|
-
}
|
|
1
|
+
export function base64toFile(b64Data: string, name: string, type = 'application/pdf') {
|
|
2
|
+
const bytes = window.atob(b64Data)
|
|
3
|
+
const writer = new Uint8Array(new ArrayBuffer(bytes.length))
|
|
4
|
+
|
|
5
|
+
for (let i = 0; i < bytes.length; i++) {
|
|
6
|
+
writer[i] = bytes.charCodeAt(i)
|
|
7
|
+
}
|
|
8
|
+
return new File([writer.buffer], name, { type })
|
|
9
|
+
}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
export const clearCacheData = async (CACHE_VERSION:string) => {
|
|
2
|
-
const version = localStorage.getItem('version')
|
|
3
|
-
if (
|
|
4
|
-
(!version || version !== CACHE_VERSION) &&
|
|
5
|
-
indexedDB &&
|
|
6
|
-
typeof indexedDB['databases'] === 'function'
|
|
7
|
-
) {
|
|
8
|
-
const IndexedDBS = await indexedDB.databases()
|
|
9
|
-
|
|
10
|
-
IndexedDBS.map((IndexedDB) => {
|
|
11
|
-
IndexedDB.name && indexedDB.deleteDatabase(IndexedDB.name)
|
|
12
|
-
})
|
|
13
|
-
|
|
14
|
-
localStorage.setItem('version', CACHE_VERSION)
|
|
15
|
-
}
|
|
1
|
+
export const clearCacheData = async (CACHE_VERSION:string) => {
|
|
2
|
+
const version = localStorage.getItem('version')
|
|
3
|
+
if (
|
|
4
|
+
(!version || version !== CACHE_VERSION) &&
|
|
5
|
+
indexedDB &&
|
|
6
|
+
typeof indexedDB['databases'] === 'function'
|
|
7
|
+
) {
|
|
8
|
+
const IndexedDBS = await indexedDB.databases()
|
|
9
|
+
|
|
10
|
+
IndexedDBS.map((IndexedDB) => {
|
|
11
|
+
IndexedDB.name && indexedDB.deleteDatabase(IndexedDB.name)
|
|
12
|
+
})
|
|
13
|
+
|
|
14
|
+
localStorage.setItem('version', CACHE_VERSION)
|
|
15
|
+
}
|
|
16
16
|
}
|
|
@@ -1,82 +1,82 @@
|
|
|
1
|
-
import { httpToWs } from './Config'
|
|
2
|
-
import type { EnvironmentsUrls } from './EnvironmentsUrls'
|
|
3
|
-
|
|
4
|
-
interface IBasicEnv {
|
|
5
|
-
DEVELOPMENT: boolean
|
|
6
|
-
ENVIRONMENT_TO_OPERATE: string
|
|
7
|
-
ADVOCA_ACCESS_URL?: string
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
type IEnvironmentUrls = typeof EnvironmentsUrls.local
|
|
11
|
-
|
|
12
|
-
type IKeyEnvironmentUrls = keyof IEnvironmentUrls
|
|
13
|
-
|
|
14
|
-
type ISrvKeysTransformToWs<T> = T extends `SRV_${infer K}` ? `SRV_${K}_WS` : never
|
|
15
|
-
|
|
16
|
-
//type IKeyEnvironmentUrlsWs = `${IKeyEnvironmentUrls}_WS`
|
|
17
|
-
|
|
18
|
-
export function generateEnvConfigsBindings<
|
|
19
|
-
T extends IBasicEnv,
|
|
20
|
-
K extends (keyof T | IKeyEnvironmentUrls | ISrvKeysTransformToWs<keyof T | IKeyEnvironmentUrls>) & string,
|
|
21
|
-
S,
|
|
22
|
-
>(envs_import: Promise<{ envs: T }>, required_envs: K[], static_env: S) {
|
|
23
|
-
type IEnvConfigs = T & IEnvironmentUrls & Record<ISrvKeysTransformToWs<keyof T | IKeyEnvironmentUrls>, string>
|
|
24
|
-
|
|
25
|
-
let env_vars = {} as T
|
|
26
|
-
|
|
27
|
-
let envConfigs = {} as Pick<IEnvConfigs, K extends (keyof IEnvConfigs)&string ? K : never> & S
|
|
28
|
-
|
|
29
|
-
let envUrls: IEnvironmentUrls | undefined
|
|
30
|
-
|
|
31
|
-
function EnvConfigsFn() {
|
|
32
|
-
if (Object.keys(envConfigs).length > 0) {
|
|
33
|
-
return envConfigs
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
if (Object.keys(env_vars).length === 0) {
|
|
37
|
-
console.error(
|
|
38
|
-
'Env variables not loaded! \n Possible reasons: \n 1) You have a called EnvConfigsFn() before promises inside fetchConfigs() was resolved. \n This happens usually when one call EnvConfigsFn() on top level of a module',
|
|
39
|
-
)
|
|
40
|
-
return envConfigs
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
envConfigs = required_envs.reduce((acc, curr) => {
|
|
44
|
-
if (!curr.endsWith('_WS')) {
|
|
45
|
-
const field = env_vars[curr as keyof T] ?? envUrls?.[curr as IKeyEnvironmentUrls]
|
|
46
|
-
|
|
47
|
-
// @ts-ignore
|
|
48
|
-
acc[curr] = field
|
|
49
|
-
} else {
|
|
50
|
-
const key = curr.replace('_WS', '')
|
|
51
|
-
const field = httpToWs(
|
|
52
|
-
//@ts-ignore
|
|
53
|
-
env_vars[key] || envUrls?.[key as IKeyEnvironmentUrls] || '',
|
|
54
|
-
)
|
|
55
|
-
if (field) {
|
|
56
|
-
// @ts-ignore
|
|
57
|
-
acc[curr] = field
|
|
58
|
-
} else {
|
|
59
|
-
console.warn(`No URL found for ${key}`)
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
return acc
|
|
64
|
-
}, envConfigs)
|
|
65
|
-
|
|
66
|
-
envConfigs = { ...envConfigs, ...static_env }
|
|
67
|
-
|
|
68
|
-
return envConfigs
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
async function fetchConfigs() {
|
|
72
|
-
const envs = (await envs_import).envs
|
|
73
|
-
|
|
74
|
-
env_vars = envs
|
|
75
|
-
|
|
76
|
-
if (env_vars.DEVELOPMENT) {
|
|
77
|
-
envUrls = (await import('./EnvironmentsUrls')).default(env_vars.ENVIRONMENT_TO_OPERATE)
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
return { EnvConfigsFn, fetchConfigs }
|
|
82
|
-
}
|
|
1
|
+
import { httpToWs } from './Config'
|
|
2
|
+
import type { EnvironmentsUrls } from './EnvironmentsUrls'
|
|
3
|
+
|
|
4
|
+
interface IBasicEnv {
|
|
5
|
+
DEVELOPMENT: boolean
|
|
6
|
+
ENVIRONMENT_TO_OPERATE: string
|
|
7
|
+
ADVOCA_ACCESS_URL?: string
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
type IEnvironmentUrls = typeof EnvironmentsUrls.local
|
|
11
|
+
|
|
12
|
+
type IKeyEnvironmentUrls = keyof IEnvironmentUrls
|
|
13
|
+
|
|
14
|
+
type ISrvKeysTransformToWs<T> = T extends `SRV_${infer K}` ? `SRV_${K}_WS` : never
|
|
15
|
+
|
|
16
|
+
//type IKeyEnvironmentUrlsWs = `${IKeyEnvironmentUrls}_WS`
|
|
17
|
+
|
|
18
|
+
export function generateEnvConfigsBindings<
|
|
19
|
+
T extends IBasicEnv,
|
|
20
|
+
K extends (keyof T | IKeyEnvironmentUrls | ISrvKeysTransformToWs<keyof T | IKeyEnvironmentUrls>) & string,
|
|
21
|
+
S,
|
|
22
|
+
>(envs_import: Promise<{ envs: T }>, required_envs: K[], static_env: S) {
|
|
23
|
+
type IEnvConfigs = T & IEnvironmentUrls & Record<ISrvKeysTransformToWs<keyof T | IKeyEnvironmentUrls>, string>
|
|
24
|
+
|
|
25
|
+
let env_vars = {} as T
|
|
26
|
+
|
|
27
|
+
let envConfigs = {} as Pick<IEnvConfigs, K extends (keyof IEnvConfigs)&string ? K : never> & S
|
|
28
|
+
|
|
29
|
+
let envUrls: IEnvironmentUrls | undefined
|
|
30
|
+
|
|
31
|
+
function EnvConfigsFn() {
|
|
32
|
+
if (Object.keys(envConfigs).length > 0) {
|
|
33
|
+
return envConfigs
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
if (Object.keys(env_vars).length === 0) {
|
|
37
|
+
console.error(
|
|
38
|
+
'Env variables not loaded! \n Possible reasons: \n 1) You have a called EnvConfigsFn() before promises inside fetchConfigs() was resolved. \n This happens usually when one call EnvConfigsFn() on top level of a module',
|
|
39
|
+
)
|
|
40
|
+
return envConfigs
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
envConfigs = required_envs.reduce((acc, curr) => {
|
|
44
|
+
if (!curr.endsWith('_WS')) {
|
|
45
|
+
const field = env_vars[curr as keyof T] ?? envUrls?.[curr as IKeyEnvironmentUrls]
|
|
46
|
+
|
|
47
|
+
// @ts-ignore
|
|
48
|
+
acc[curr] = field
|
|
49
|
+
} else {
|
|
50
|
+
const key = curr.replace('_WS', '')
|
|
51
|
+
const field = httpToWs(
|
|
52
|
+
//@ts-ignore
|
|
53
|
+
env_vars[key] || envUrls?.[key as IKeyEnvironmentUrls] || '',
|
|
54
|
+
)
|
|
55
|
+
if (field) {
|
|
56
|
+
// @ts-ignore
|
|
57
|
+
acc[curr] = field
|
|
58
|
+
} else {
|
|
59
|
+
console.warn(`No URL found for ${key}`)
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
return acc
|
|
64
|
+
}, envConfigs)
|
|
65
|
+
|
|
66
|
+
envConfigs = { ...envConfigs, ...static_env }
|
|
67
|
+
|
|
68
|
+
return envConfigs
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
async function fetchConfigs() {
|
|
72
|
+
const envs = (await envs_import).envs
|
|
73
|
+
|
|
74
|
+
env_vars = envs
|
|
75
|
+
|
|
76
|
+
if (env_vars.DEVELOPMENT) {
|
|
77
|
+
envUrls = (await import('./EnvironmentsUrls')).default(env_vars.ENVIRONMENT_TO_OPERATE)
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
return { EnvConfigsFn, fetchConfigs }
|
|
82
|
+
}
|
|
@@ -1,85 +1,85 @@
|
|
|
1
|
-
import type { AxiosRequestConfig } from 'axios'
|
|
2
|
-
import type { ClientOptions } from '@genql/runtime'
|
|
3
|
-
import { httpToWs } from './Config'
|
|
4
|
-
|
|
5
|
-
interface CliOptions extends Omit<ClientOptions, 'url'> {
|
|
6
|
-
anonymous?: boolean
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
export function generateGenqlClient<T>({
|
|
10
|
-
accessTokenHasExpired,
|
|
11
|
-
setReqConfig,
|
|
12
|
-
createClient,
|
|
13
|
-
serviceUrl,
|
|
14
|
-
path = '/v1/graphql',
|
|
15
|
-
}: {
|
|
16
|
-
accessTokenHasExpired: () => boolean
|
|
17
|
-
setReqConfig: () => Promise<AxiosRequestConfig<any>>
|
|
18
|
-
createClient: (options?: ClientOptions | undefined) => T
|
|
19
|
-
serviceUrl: () => string
|
|
20
|
-
path?: string
|
|
21
|
-
}) {
|
|
22
|
-
let client: T | null = null
|
|
23
|
-
let wsClient: T | null = null
|
|
24
|
-
|
|
25
|
-
async function getGenqlClient() {
|
|
26
|
-
if (accessTokenHasExpired() || client === null) {
|
|
27
|
-
client = await genqlClient()
|
|
28
|
-
|
|
29
|
-
return client
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
return client
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
function resetGenqlClient() {
|
|
36
|
-
client = null
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
async function genqlClient(options: CliOptions = {}): Promise<T> {
|
|
40
|
-
let req_headers: Record<string, string> = {}
|
|
41
|
-
|
|
42
|
-
const { anonymous, headers, ...rest } = options
|
|
43
|
-
|
|
44
|
-
if (!serviceUrl()) {
|
|
45
|
-
console.warn('requred param srv_url is undefined, please check EnvConfig object!')
|
|
46
|
-
}
|
|
47
|
-
if (!anonymous) {
|
|
48
|
-
req_headers = ((await setReqConfig()).headers ?? {}) as Record<string, string>
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
return createClient({
|
|
52
|
-
url: `${serviceUrl()}${path}`,
|
|
53
|
-
headers: {
|
|
54
|
-
...req_headers,
|
|
55
|
-
...headers,
|
|
56
|
-
},
|
|
57
|
-
batch: { batchInterval: 50, maxBatchSize: 100 },
|
|
58
|
-
...rest,
|
|
59
|
-
})
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
async function genqlClientWs() {
|
|
63
|
-
const req_headers = ((await setReqConfig()).headers ?? {}) as Record<string, string>
|
|
64
|
-
|
|
65
|
-
if (accessTokenHasExpired() || !wsClient) {
|
|
66
|
-
wsClient = createClient({
|
|
67
|
-
url: `${httpToWs(serviceUrl())}${path}`,
|
|
68
|
-
cache: 'reload',
|
|
69
|
-
batch: { batchInterval: 50, maxBatchSize: 100 },
|
|
70
|
-
subscription: {
|
|
71
|
-
timeout: 1,
|
|
72
|
-
reconnect: true,
|
|
73
|
-
reconnectionAttempts: 5,
|
|
74
|
-
headers: {
|
|
75
|
-
...req_headers,
|
|
76
|
-
},
|
|
77
|
-
},
|
|
78
|
-
})
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
return wsClient
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
return { getGenqlClient, resetGenqlClient, genqlClient, genqlClientWs }
|
|
85
|
-
}
|
|
1
|
+
import type { AxiosRequestConfig } from 'axios'
|
|
2
|
+
import type { ClientOptions } from '@genql/runtime'
|
|
3
|
+
import { httpToWs } from './Config'
|
|
4
|
+
|
|
5
|
+
interface CliOptions extends Omit<ClientOptions, 'url'> {
|
|
6
|
+
anonymous?: boolean
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export function generateGenqlClient<T>({
|
|
10
|
+
accessTokenHasExpired,
|
|
11
|
+
setReqConfig,
|
|
12
|
+
createClient,
|
|
13
|
+
serviceUrl,
|
|
14
|
+
path = '/v1/graphql',
|
|
15
|
+
}: {
|
|
16
|
+
accessTokenHasExpired: () => boolean
|
|
17
|
+
setReqConfig: () => Promise<AxiosRequestConfig<any>>
|
|
18
|
+
createClient: (options?: ClientOptions | undefined) => T
|
|
19
|
+
serviceUrl: () => string
|
|
20
|
+
path?: string
|
|
21
|
+
}) {
|
|
22
|
+
let client: T | null = null
|
|
23
|
+
let wsClient: T | null = null
|
|
24
|
+
|
|
25
|
+
async function getGenqlClient() {
|
|
26
|
+
if (accessTokenHasExpired() || client === null) {
|
|
27
|
+
client = await genqlClient()
|
|
28
|
+
|
|
29
|
+
return client
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
return client
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
function resetGenqlClient() {
|
|
36
|
+
client = null
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
async function genqlClient(options: CliOptions = {}): Promise<T> {
|
|
40
|
+
let req_headers: Record<string, string> = {}
|
|
41
|
+
|
|
42
|
+
const { anonymous, headers, ...rest } = options
|
|
43
|
+
|
|
44
|
+
if (!serviceUrl()) {
|
|
45
|
+
console.warn('requred param srv_url is undefined, please check EnvConfig object!')
|
|
46
|
+
}
|
|
47
|
+
if (!anonymous) {
|
|
48
|
+
req_headers = ((await setReqConfig()).headers ?? {}) as Record<string, string>
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
return createClient({
|
|
52
|
+
url: `${serviceUrl()}${path}`,
|
|
53
|
+
headers: {
|
|
54
|
+
...req_headers,
|
|
55
|
+
...headers,
|
|
56
|
+
},
|
|
57
|
+
batch: { batchInterval: 50, maxBatchSize: 100 },
|
|
58
|
+
...rest,
|
|
59
|
+
})
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
async function genqlClientWs() {
|
|
63
|
+
const req_headers = ((await setReqConfig()).headers ?? {}) as Record<string, string>
|
|
64
|
+
|
|
65
|
+
if (accessTokenHasExpired() || !wsClient) {
|
|
66
|
+
wsClient = createClient({
|
|
67
|
+
url: `${httpToWs(serviceUrl())}${path}`,
|
|
68
|
+
cache: 'reload',
|
|
69
|
+
batch: { batchInterval: 50, maxBatchSize: 100 },
|
|
70
|
+
subscription: {
|
|
71
|
+
timeout: 1,
|
|
72
|
+
reconnect: true,
|
|
73
|
+
reconnectionAttempts: 5,
|
|
74
|
+
headers: {
|
|
75
|
+
...req_headers,
|
|
76
|
+
},
|
|
77
|
+
},
|
|
78
|
+
})
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
return wsClient
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
return { getGenqlClient, resetGenqlClient, genqlClient, genqlClientWs }
|
|
85
|
+
}
|