asma-helpers 0.2.47 → 0.2.49

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 (149) hide show
  1. package/.prettierrc +15 -15
  2. package/.vscode/settings.json +39 -39
  3. package/README.md +0 -0
  4. package/package.json +30 -30
  5. package/src/clients/srvAuth.ts +6 -6
  6. package/src/global.ts +46 -50
  7. package/src/helpers/CapitalizeFistLetter.ts +7 -7
  8. package/src/helpers/Config.ts +58 -58
  9. package/src/helpers/EnvironmentToOperateTypes.ts +6 -6
  10. package/src/helpers/EnvironmentsUrls.ts +102 -102
  11. package/src/helpers/FormatNumberConstants.ts +41 -41
  12. package/src/helpers/InitializeIDBListenersOnMstSnapshots.ts +62 -62
  13. package/src/helpers/InitializeIDBListenersOnMstSnapshotsThenCatch.ts +82 -82
  14. package/src/helpers/IsAdcuris.ts +4 -4
  15. package/src/helpers/IsNotEmpty.ts +2 -2
  16. package/src/helpers/NorwegianPostalCodes.ts +6 -6
  17. package/src/helpers/ProcessServerError.ts +92 -92
  18. package/src/helpers/attachUserJournalCredentials.ts +23 -23
  19. package/src/helpers/base64ToFile.ts +9 -9
  20. package/src/helpers/clearCacheData.ts +15 -15
  21. package/src/helpers/generateEnvConfigsBindings.ts +82 -82
  22. package/src/helpers/generateGenqlClient.ts +114 -120
  23. package/src/helpers/generateSrvAuthBindings.ts +231 -262
  24. package/src/helpers/getGqlOperationName.ts +20 -20
  25. package/src/helpers/getSubdomain.ts +50 -50
  26. package/src/helpers/isValidUrl.ts +12 -12
  27. package/src/helpers/parseJwt.ts +10 -10
  28. package/src/index.ts +34 -34
  29. package/src/interfaces/api/advoca/ISaveToDataBase.ts +17 -17
  30. package/src/interfaces/api/advoca/IUploadedDocument.ts +23 -23
  31. package/src/interfaces/enums.ts +56 -56
  32. package/src/utility/fetch.ts +9 -9
  33. package/tsconfig.json +84 -84
  34. package/lib/clients/srvAuth.d.ts +0 -2
  35. package/lib/clients/srvAuth.d.ts.map +0 -1
  36. package/lib/clients/srvAuth.js +0 -7
  37. package/lib/clients/srvAuth.js.map +0 -1
  38. package/lib/global.d.ts +0 -45
  39. package/lib/global.d.ts.map +0 -1
  40. package/lib/global.js +0 -5
  41. package/lib/global.js.map +0 -1
  42. package/lib/helpers/CapitalizeFistLetter.d.ts +0 -3
  43. package/lib/helpers/CapitalizeFistLetter.d.ts.map +0 -1
  44. package/lib/helpers/CapitalizeFistLetter.js +0 -7
  45. package/lib/helpers/CapitalizeFistLetter.js.map +0 -1
  46. package/lib/helpers/Config.d.ts +0 -6
  47. package/lib/helpers/Config.d.ts.map +0 -1
  48. package/lib/helpers/Config.js +0 -45
  49. package/lib/helpers/Config.js.map +0 -1
  50. package/lib/helpers/EnvironmentToOperateTypes.d.ts +0 -8
  51. package/lib/helpers/EnvironmentToOperateTypes.d.ts.map +0 -1
  52. package/lib/helpers/EnvironmentToOperateTypes.js +0 -9
  53. package/lib/helpers/EnvironmentToOperateTypes.js.map +0 -1
  54. package/lib/helpers/EnvironmentsUrls.d.ts +0 -94
  55. package/lib/helpers/EnvironmentsUrls.d.ts.map +0 -1
  56. package/lib/helpers/EnvironmentsUrls.js +0 -90
  57. package/lib/helpers/EnvironmentsUrls.js.map +0 -1
  58. package/lib/helpers/FormatNumberConstants.d.ts +0 -25
  59. package/lib/helpers/FormatNumberConstants.d.ts.map +0 -1
  60. package/lib/helpers/FormatNumberConstants.js +0 -41
  61. package/lib/helpers/FormatNumberConstants.js.map +0 -1
  62. package/lib/helpers/InitializeIDBListenersOnMstSnapshots.d.ts +0 -2
  63. package/lib/helpers/InitializeIDBListenersOnMstSnapshots.d.ts.map +0 -1
  64. package/lib/helpers/InitializeIDBListenersOnMstSnapshots.js +0 -50
  65. package/lib/helpers/InitializeIDBListenersOnMstSnapshots.js.map +0 -1
  66. package/lib/helpers/InitializeIDBListenersOnMstSnapshotsThenCatch.d.ts +0 -9
  67. package/lib/helpers/InitializeIDBListenersOnMstSnapshotsThenCatch.d.ts.map +0 -1
  68. package/lib/helpers/InitializeIDBListenersOnMstSnapshotsThenCatch.js +0 -69
  69. package/lib/helpers/InitializeIDBListenersOnMstSnapshotsThenCatch.js.map +0 -1
  70. package/lib/helpers/IsAdcuris.d.ts +0 -3
  71. package/lib/helpers/IsAdcuris.d.ts.map +0 -1
  72. package/lib/helpers/IsAdcuris.js +0 -5
  73. package/lib/helpers/IsAdcuris.js.map +0 -1
  74. package/lib/helpers/IsNotEmpty.d.ts +0 -2
  75. package/lib/helpers/IsNotEmpty.d.ts.map +0 -1
  76. package/lib/helpers/IsNotEmpty.js +0 -4
  77. package/lib/helpers/IsNotEmpty.js.map +0 -1
  78. package/lib/helpers/NorwegianPostalCodes.d.ts +0 -9
  79. package/lib/helpers/NorwegianPostalCodes.d.ts.map +0 -1
  80. package/lib/helpers/NorwegianPostalCodes.js +0 -4
  81. package/lib/helpers/NorwegianPostalCodes.js.map +0 -1
  82. package/lib/helpers/ProcessServerError.d.ts +0 -3
  83. package/lib/helpers/ProcessServerError.d.ts.map +0 -1
  84. package/lib/helpers/ProcessServerError.js +0 -101
  85. package/lib/helpers/ProcessServerError.js.map +0 -1
  86. package/lib/helpers/attachUserJournalCredentials.d.ts +0 -2
  87. package/lib/helpers/attachUserJournalCredentials.d.ts.map +0 -1
  88. package/lib/helpers/attachUserJournalCredentials.js +0 -17
  89. package/lib/helpers/attachUserJournalCredentials.js.map +0 -1
  90. package/lib/helpers/base64ToFile.d.ts +0 -2
  91. package/lib/helpers/base64ToFile.d.ts.map +0 -1
  92. package/lib/helpers/base64ToFile.js +0 -9
  93. package/lib/helpers/base64ToFile.js.map +0 -1
  94. package/lib/helpers/clearCacheData.d.ts +0 -2
  95. package/lib/helpers/clearCacheData.d.ts.map +0 -1
  96. package/lib/helpers/clearCacheData.js +0 -13
  97. package/lib/helpers/clearCacheData.js.map +0 -1
  98. package/lib/helpers/generateEnvConfigsBindings.d.ts +0 -31
  99. package/lib/helpers/generateEnvConfigsBindings.d.ts.map +0 -1
  100. package/lib/helpers/generateEnvConfigsBindings.js +0 -49
  101. package/lib/helpers/generateEnvConfigsBindings.js.map +0 -1
  102. package/lib/helpers/generateGenqlClient.d.ts +0 -22
  103. package/lib/helpers/generateGenqlClient.d.ts.map +0 -1
  104. package/lib/helpers/generateGenqlClient.js +0 -87
  105. package/lib/helpers/generateGenqlClient.js.map +0 -1
  106. package/lib/helpers/generateSrvAuthBindings.d.ts +0 -41
  107. package/lib/helpers/generateSrvAuthBindings.d.ts.map +0 -1
  108. package/lib/helpers/generateSrvAuthBindings.js +0 -200
  109. package/lib/helpers/generateSrvAuthBindings.js.map +0 -1
  110. package/lib/helpers/getGqlOperationName.d.ts +0 -2
  111. package/lib/helpers/getGqlOperationName.d.ts.map +0 -1
  112. package/lib/helpers/getGqlOperationName.js +0 -16
  113. package/lib/helpers/getGqlOperationName.js.map +0 -1
  114. package/lib/helpers/getSubdomain.d.ts +0 -13
  115. package/lib/helpers/getSubdomain.d.ts.map +0 -1
  116. package/lib/helpers/getSubdomain.js +0 -40
  117. package/lib/helpers/getSubdomain.js.map +0 -1
  118. package/lib/helpers/isValidUrl.d.ts +0 -2
  119. package/lib/helpers/isValidUrl.d.ts.map +0 -1
  120. package/lib/helpers/isValidUrl.js +0 -10
  121. package/lib/helpers/isValidUrl.js.map +0 -1
  122. package/lib/helpers/parseJwt.d.ts +0 -2
  123. package/lib/helpers/parseJwt.d.ts.map +0 -1
  124. package/lib/helpers/parseJwt.js +0 -8
  125. package/lib/helpers/parseJwt.js.map +0 -1
  126. package/lib/helpers/userTypingSignal.d.ts +0 -5
  127. package/lib/helpers/userTypingSignal.d.ts.map +0 -1
  128. package/lib/helpers/userTypingSignal.js +0 -33
  129. package/lib/helpers/userTypingSignal.js.map +0 -1
  130. package/lib/index.d.ts +0 -29
  131. package/lib/index.d.ts.map +0 -1
  132. package/lib/index.js +0 -27
  133. package/lib/index.js.map +0 -1
  134. package/lib/interfaces/api/advoca/ISaveToDataBase.d.ts +0 -17
  135. package/lib/interfaces/api/advoca/ISaveToDataBase.d.ts.map +0 -1
  136. package/lib/interfaces/api/advoca/ISaveToDataBase.js +0 -2
  137. package/lib/interfaces/api/advoca/ISaveToDataBase.js.map +0 -1
  138. package/lib/interfaces/api/advoca/IUploadedDocument.d.ts +0 -27
  139. package/lib/interfaces/api/advoca/IUploadedDocument.d.ts.map +0 -1
  140. package/lib/interfaces/api/advoca/IUploadedDocument.js +0 -2
  141. package/lib/interfaces/api/advoca/IUploadedDocument.js.map +0 -1
  142. package/lib/interfaces/enums.d.ts +0 -51
  143. package/lib/interfaces/enums.d.ts.map +0 -1
  144. package/lib/interfaces/enums.js +0 -60
  145. package/lib/interfaces/enums.js.map +0 -1
  146. package/lib/utility/fetch.d.ts +0 -2
  147. package/lib/utility/fetch.d.ts.map +0 -1
  148. package/lib/utility/fetch.js +0 -6
  149. package/lib/utility/fetch.js.map +0 -1
@@ -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,23 +1,23 @@
1
- import { history } from '../global'
2
- export function attachUserJournalCredentials() {
3
- const URLSearch = new URLSearchParams(history.location.search)
4
-
5
- const brukerBrukerNavn = URLSearch.get('brukerBrukerNavn')
6
-
7
- const region = URLSearch.get('brukerRegion')
8
-
9
- const journal_user_id = URLSearch.get('brukerActNo')
10
-
11
- const urls = new URLSearchParams()
12
-
13
- if (brukerBrukerNavn && region && journal_user_id) {
14
- urls.append('brukerBrukerNavn', brukerBrukerNavn)
15
-
16
- // TODO add support for multiregions
17
- urls.append('region', region)
18
-
19
- urls.append('journal_user_id', journal_user_id)
20
- }
21
- const str_url = urls.toString()
22
- return str_url ? `&${str_url}` : ''
23
- }
1
+ import { history } from '../global'
2
+ export function attachUserJournalCredentials() {
3
+ const URLSearch = new URLSearchParams(history.location.search)
4
+
5
+ const brukerBrukerNavn = URLSearch.get('brukerBrukerNavn')
6
+
7
+ const region = URLSearch.get('brukerRegion')
8
+
9
+ const journal_user_id = URLSearch.get('brukerActNo')
10
+
11
+ const urls = new URLSearchParams()
12
+
13
+ if (brukerBrukerNavn && region && journal_user_id) {
14
+ urls.append('brukerBrukerNavn', brukerBrukerNavn)
15
+
16
+ // TODO add support for multiregions
17
+ urls.append('region', region)
18
+
19
+ urls.append('journal_user_id', journal_user_id)
20
+ }
21
+ const str_url = urls.toString()
22
+ return str_url ? `&${str_url}` : ''
23
+ }
@@ -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
+ }