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