@stack-spot/portal-network 0.184.0-beta.1 → 0.184.0

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 (151) hide show
  1. package/CHANGELOG.md +2412 -2431
  2. package/dist/api/account.js +1 -1
  3. package/dist/api/agent-tools.js +1 -1
  4. package/dist/api/agent.js +1 -1
  5. package/dist/api/ai.js +1 -1
  6. package/dist/api/apiManagement.js +1 -1
  7. package/dist/api/apiRuntime.js +1 -1
  8. package/dist/api/cloudAccount.js +1 -1
  9. package/dist/api/cloudPlatform.js +1 -1
  10. package/dist/api/cloudPlatformHorizon.js +1 -1
  11. package/dist/api/cloudRuntimes.js +1 -1
  12. package/dist/api/cloudServices.js +1 -1
  13. package/dist/api/codeShift.d.ts +4 -76
  14. package/dist/api/codeShift.d.ts.map +1 -1
  15. package/dist/api/codeShift.js +1 -14
  16. package/dist/api/codeShift.js.map +1 -1
  17. package/dist/api/content.js +1 -1
  18. package/dist/api/dataIntegration.js +1 -1
  19. package/dist/api/discover.js +1 -1
  20. package/dist/api/genAiInference.js +1 -1
  21. package/dist/api/insights.js +1 -1
  22. package/dist/api/notification.js +1 -1
  23. package/dist/api/secrets.js +1 -1
  24. package/dist/api/serviceCatalog.js +1 -1
  25. package/dist/api/workspace-ai.js +1 -1
  26. package/dist/api/workspace.js +1 -1
  27. package/dist/api/workspaceManager.d.ts +16 -10
  28. package/dist/api/workspaceManager.d.ts.map +1 -1
  29. package/dist/api/workspaceManager.js +11 -1
  30. package/dist/api/workspaceManager.js.map +1 -1
  31. package/dist/api/workspaceSearchEngine.js +1 -1
  32. package/dist/client/ai.d.ts.map +1 -1
  33. package/dist/client/ai.js +14 -84
  34. package/dist/client/ai.js.map +1 -1
  35. package/dist/client/code-shift.d.ts +0 -30
  36. package/dist/client/code-shift.d.ts.map +1 -1
  37. package/dist/client/code-shift.js +1 -37
  38. package/dist/client/code-shift.js.map +1 -1
  39. package/dist/client/types.d.ts +6 -26
  40. package/dist/client/types.d.ts.map +1 -1
  41. package/dist/client/workspace-manager.d.ts +6 -0
  42. package/dist/client/workspace-manager.d.ts.map +1 -1
  43. package/dist/client/workspace-manager.js +10 -1
  44. package/dist/client/workspace-manager.js.map +1 -1
  45. package/package.json +1 -1
  46. package/readme.md +1 -1
  47. package/scripts/generate-apis.ts +134 -134
  48. package/src/api/account.ts +8367 -8368
  49. package/src/api/agent-tools.ts +2169 -2172
  50. package/src/api/agent.ts +1083 -1085
  51. package/src/api/ai.ts +3388 -3388
  52. package/src/api/apiManagement.ts +570 -570
  53. package/src/api/apiRuntime.ts +2103 -2103
  54. package/src/api/cloudAccount.ts +1239 -1239
  55. package/src/api/cloudPlatform.ts +927 -927
  56. package/src/api/cloudPlatformHorizon.ts +2655 -2655
  57. package/src/api/cloudRuntimes.ts +2043 -2043
  58. package/src/api/cloudServices.ts +1445 -1445
  59. package/src/api/codeShift.ts +3481 -3580
  60. package/src/api/content.ts +9785 -9785
  61. package/src/api/dataIntegration.ts +1657 -1657
  62. package/src/api/discover.ts +435 -435
  63. package/src/api/eventBus.ts +171 -171
  64. package/src/api/genAiInference.ts +603 -603
  65. package/src/api/insights.ts +310 -310
  66. package/src/api/notification.ts +334 -336
  67. package/src/api/secrets.ts +342 -342
  68. package/src/api/serviceCatalog.ts +2908 -2908
  69. package/src/api/workflows.ts +1669 -1669
  70. package/src/api/workspace-ai.ts +677 -677
  71. package/src/api/workspace.ts +5889 -5889
  72. package/src/api/workspaceManager.ts +2951 -2936
  73. package/src/api/workspaceSearchEngine.ts +153 -153
  74. package/src/api-addresses.ts +120 -120
  75. package/src/apis-itau.json +225 -225
  76. package/src/apis.json +225 -225
  77. package/src/client/account.ts +902 -902
  78. package/src/client/agent-tools.ts +210 -210
  79. package/src/client/agent.ts +81 -81
  80. package/src/client/ai.ts +395 -469
  81. package/src/client/api-management.ts +40 -40
  82. package/src/client/cloud-account.ts +70 -70
  83. package/src/client/cloud-platform-horizon.ts +113 -113
  84. package/src/client/cloud-platform.ts +163 -163
  85. package/src/client/cloud-runtimes.ts +129 -129
  86. package/src/client/cloud-services.ts +94 -94
  87. package/src/client/code-shift.ts +349 -371
  88. package/src/client/content.ts +538 -538
  89. package/src/client/data-integration.ts +191 -191
  90. package/src/client/discover.ts +89 -89
  91. package/src/client/event-bus.ts +84 -84
  92. package/src/client/gen-ai-inference.ts +65 -65
  93. package/src/client/insights.ts +28 -28
  94. package/src/client/notification.ts +32 -32
  95. package/src/client/runtime-manager.ts +76 -76
  96. package/src/client/secrets.ts +60 -60
  97. package/src/client/types.ts +377 -398
  98. package/src/client/workflow.ts +83 -83
  99. package/src/client/workspace-ai.ts +191 -191
  100. package/src/client/workspace-manager.ts +564 -560
  101. package/src/client/workspace-search.ts +39 -39
  102. package/src/client/workspace.ts +480 -480
  103. package/src/error/DefaultAPIError.ts +151 -151
  104. package/src/error/FileUploadError.ts +18 -18
  105. package/src/error/IgnoredErrorCodes.ts +3 -3
  106. package/src/error/StackspotAPIError.ts +101 -101
  107. package/src/error/StreamCanceledError.ts +10 -10
  108. package/src/error/StreamError.ts +7 -7
  109. package/src/error/StreamJsonError.ts +10 -10
  110. package/src/error/dictionary/account.ts +58 -58
  111. package/src/error/dictionary/action-details.ts +20 -20
  112. package/src/error/dictionary/action.ts +211 -211
  113. package/src/error/dictionary/agent-tools.ts +75 -75
  114. package/src/error/dictionary/ai-inference.ts +28 -28
  115. package/src/error/dictionary/base.ts +22 -22
  116. package/src/error/dictionary/cloud-platform.ts +82 -82
  117. package/src/error/dictionary/cnt-fields.ts +14 -14
  118. package/src/error/dictionary/cnt.ts +103 -103
  119. package/src/error/dictionary/code-shift.ts +12 -12
  120. package/src/error/dictionary/rte.ts +24 -24
  121. package/src/error/dictionary/rtm.ts +10 -10
  122. package/src/error/dictionary/secrets.ts +14 -14
  123. package/src/error/dictionary/workspace-ai.ts +10 -10
  124. package/src/error/dictionary/workspace-details.ts +15 -15
  125. package/src/error/dictionary/workspace-fields.ts +10 -10
  126. package/src/error/dictionary/workspace.ts +209 -209
  127. package/src/error/types.ts +21 -21
  128. package/src/index.ts +43 -43
  129. package/src/network/AutoInfiniteQuery.ts +115 -115
  130. package/src/network/AutoMutation.ts +27 -27
  131. package/src/network/AutoOperation.ts +73 -73
  132. package/src/network/AutoQuery.ts +75 -75
  133. package/src/network/ManualInfiniteQuery.ts +95 -95
  134. package/src/network/ManualMutation.ts +40 -40
  135. package/src/network/ManualOperation.ts +52 -52
  136. package/src/network/ManualQuery.ts +82 -82
  137. package/src/network/NetworkClient.ts +167 -167
  138. package/src/network/ReactQueryNetworkClient.ts +312 -312
  139. package/src/network/react-query-client.ts +14 -14
  140. package/src/network/types.ts +294 -294
  141. package/src/types.ts +1 -1
  142. package/src/utils/StreamedArray.tsx +146 -146
  143. package/src/utils/StreamedJson.tsx +166 -166
  144. package/src/utils/remove-authorization-param.ts +6 -6
  145. package/src/utils/string.ts +19 -19
  146. package/src/utils/use-extended-list.ts +80 -80
  147. package/src/utils/use-streamed-array.ts +17 -17
  148. package/tsconfig.build.json +4 -4
  149. package/tsconfig.json +10 -10
  150. package/logs/simple-failure/01JBER7AWKACEC3Y1NF7M6PHFF/job_id_1.log +0 -3
  151. package/logs/simple-suspend/01JBEMQG94ADPT99MSZ7EJKGXZ/job_id_1.log +0 -5
@@ -1,153 +1,153 @@
1
- /**
2
- * Search Engine API
3
- * v1.0.0
4
- * DO NOT MODIFY - This file has been generated using oazapfts.
5
- * See https://www.npmjs.com/package/oazapfts
6
- */
7
- import * as Oazapfts from "@oazapfts/runtime";
8
- import * as QS from "@oazapfts/runtime/query";
9
- export const defaults: Oazapfts.Defaults<Oazapfts.CustomHeaders> = {
10
- headers: {},
11
- baseUrl: "https://workspace-search-engine-api.dev.stackspot.com",
12
- };
13
- const oazapfts = Oazapfts.runtime(defaults);
14
- export const servers = {
15
- generatedServerUrl: "https://workspace-search-engine-api.dev.stackspot.com"
16
- };
17
- export type ExtraDataResponse = {
18
- key: string;
19
- value: string;
20
- };
21
- export type SearchDataItemResponse = {
22
- /** The resource identifier. */
23
- identifier?: string;
24
- /** The resource slug. */
25
- identifierSlug?: string;
26
- /** The resource description. */
27
- description?: string;
28
- /** The resource display name. */
29
- name?: string;
30
- /** The resource extra data correlated to itself (ie: the workspace ID of an application) */
31
- extraData?: ExtraDataResponse[];
32
- };
33
- export type SearchDataResponse = {
34
- /** The resource type category of the items */
35
- category?: string;
36
- /** The total result count for the searched text */
37
- totalCount?: number;
38
- /** List of the resources found */
39
- items?: SearchDataItemResponse[];
40
- };
41
- export type Pagination = {
42
- /** Total pages */
43
- totalPages?: number;
44
- /** Total pageable elements */
45
- totalElements?: number;
46
- /** Current page number starting from 0 */
47
- pageNumber?: number;
48
- /** Current page size. Fixed 50 items. */
49
- pageSize?: number;
50
- /** Has more results to return. */
51
- hasNext?: boolean;
52
- };
53
- export type SearchResponse = {
54
- content: SearchDataResponse[];
55
- pagination?: Pagination;
56
- };
57
- export type ValidationDetails = {
58
- code: string;
59
- field?: string;
60
- details?: string;
61
- values?: string[];
62
- };
63
- export type ErrorResponse = {
64
- code: string;
65
- status: number;
66
- details: string;
67
- validationDetails?: ValidationDetails[];
68
- };
69
- export type HistoryItemResponse = {
70
- id: string;
71
- searchText: string;
72
- };
73
- export type SearchHistoryResponse = {
74
- items: HistoryItemResponse[];
75
- };
76
- /**
77
- * Search all Stackspot resources using semantic search.
78
- */
79
- export function search({ q, category, page }: {
80
- q: string;
81
- category?: string;
82
- page?: number;
83
- }, opts?: Oazapfts.RequestOpts) {
84
- return oazapfts.ok(oazapfts.fetchJson<{
85
- status: 200;
86
- data: SearchResponse;
87
- } | {
88
- status: 400;
89
- data: ErrorResponse;
90
- } | {
91
- status: 500;
92
- data: ErrorResponse;
93
- }>(`/v1/search${QS.query(QS.explode({
94
- q,
95
- category,
96
- page
97
- }))}`, {
98
- ...opts
99
- }));
100
- }
101
- /**
102
- * Get the logged-in user search history list.
103
- */
104
- export function getUserHistory(opts?: Oazapfts.RequestOpts) {
105
- return oazapfts.ok(oazapfts.fetchJson<{
106
- status: 200;
107
- data: SearchHistoryResponse;
108
- } | {
109
- status: 403;
110
- data: ErrorResponse;
111
- } | {
112
- status: 500;
113
- data: ErrorResponse;
114
- }>("/v1/search/history", {
115
- ...opts
116
- }));
117
- }
118
- /**
119
- * Clear the logged-in user search history.
120
- */
121
- export function clearUserHistory(opts?: Oazapfts.RequestOpts) {
122
- return oazapfts.ok(oazapfts.fetchJson<{
123
- status: 204;
124
- } | {
125
- status: 403;
126
- data: ErrorResponse;
127
- } | {
128
- status: 500;
129
- data: ErrorResponse;
130
- }>("/v1/search/history", {
131
- ...opts,
132
- method: "DELETE"
133
- }));
134
- }
135
- /**
136
- * Delete the logged-in user specific search history item.
137
- */
138
- export function deleteUserHistoryItem({ itemId }: {
139
- itemId: string;
140
- }, opts?: Oazapfts.RequestOpts) {
141
- return oazapfts.ok(oazapfts.fetchJson<{
142
- status: 204;
143
- } | {
144
- status: 403;
145
- data: ErrorResponse;
146
- } | {
147
- status: 500;
148
- data: ErrorResponse;
149
- }>(`/v1/search/history/${encodeURIComponent(itemId)}`, {
150
- ...opts,
151
- method: "DELETE"
152
- }));
153
- }
1
+ /**
2
+ * Search Engine API
3
+ * v1.0.0
4
+ * DO NOT MODIFY - This file has been generated using oazapfts.
5
+ * See https://www.npmjs.com/package/oazapfts
6
+ */
7
+ import * as Oazapfts from "@oazapfts/runtime";
8
+ import * as QS from "@oazapfts/runtime/query";
9
+ export const defaults: Oazapfts.Defaults<Oazapfts.CustomHeaders> = {
10
+ headers: {},
11
+ baseUrl: "https://workspace-search-engine-api.dev.stackspot.com",
12
+ };
13
+ const oazapfts = Oazapfts.runtime(defaults);
14
+ export const servers = {
15
+ generatedServerUrl: "https://workspace-search-engine-api.dev.stackspot.com"
16
+ };
17
+ export type ExtraDataResponse = {
18
+ key: string;
19
+ value: string;
20
+ };
21
+ export type SearchDataItemResponse = {
22
+ /** The resource identifier. */
23
+ identifier?: string;
24
+ /** The resource slug. */
25
+ identifierSlug?: string;
26
+ /** The resource description. */
27
+ description?: string;
28
+ /** The resource display name. */
29
+ name?: string;
30
+ /** The resource extra data correlated to itself (ie: the workspace ID of an application) */
31
+ extraData?: ExtraDataResponse[];
32
+ };
33
+ export type SearchDataResponse = {
34
+ /** The resource type category of the items */
35
+ category?: string;
36
+ /** The total result count for the searched text */
37
+ totalCount?: number;
38
+ /** List of the resources found */
39
+ items?: SearchDataItemResponse[];
40
+ };
41
+ export type Pagination = {
42
+ /** Total pages */
43
+ totalPages?: number;
44
+ /** Total pageable elements */
45
+ totalElements?: number;
46
+ /** Current page number starting from 0 */
47
+ pageNumber?: number;
48
+ /** Current page size. Fixed 50 items. */
49
+ pageSize?: number;
50
+ /** Has more results to return. */
51
+ hasNext?: boolean;
52
+ };
53
+ export type SearchResponse = {
54
+ content: SearchDataResponse[];
55
+ pagination?: Pagination;
56
+ };
57
+ export type ValidationDetails = {
58
+ code: string;
59
+ field?: string;
60
+ details?: string;
61
+ values?: string[];
62
+ };
63
+ export type ErrorResponse = {
64
+ code: string;
65
+ status: number;
66
+ details: string;
67
+ validationDetails?: ValidationDetails[];
68
+ };
69
+ export type HistoryItemResponse = {
70
+ id: string;
71
+ searchText: string;
72
+ };
73
+ export type SearchHistoryResponse = {
74
+ items: HistoryItemResponse[];
75
+ };
76
+ /**
77
+ * Search all Stackspot resources using semantic search.
78
+ */
79
+ export function search({ q, category, page }: {
80
+ q: string;
81
+ category?: string;
82
+ page?: number;
83
+ }, opts?: Oazapfts.RequestOpts) {
84
+ return oazapfts.ok(oazapfts.fetchJson<{
85
+ status: 200;
86
+ data: SearchResponse;
87
+ } | {
88
+ status: 400;
89
+ data: ErrorResponse;
90
+ } | {
91
+ status: 500;
92
+ data: ErrorResponse;
93
+ }>(`/v1/search${QS.query(QS.explode({
94
+ q,
95
+ category,
96
+ page
97
+ }))}`, {
98
+ ...opts
99
+ }));
100
+ }
101
+ /**
102
+ * Get the logged-in user search history list.
103
+ */
104
+ export function getUserHistory(opts?: Oazapfts.RequestOpts) {
105
+ return oazapfts.ok(oazapfts.fetchJson<{
106
+ status: 200;
107
+ data: SearchHistoryResponse;
108
+ } | {
109
+ status: 403;
110
+ data: ErrorResponse;
111
+ } | {
112
+ status: 500;
113
+ data: ErrorResponse;
114
+ }>("/v1/search/history", {
115
+ ...opts
116
+ }));
117
+ }
118
+ /**
119
+ * Clear the logged-in user search history.
120
+ */
121
+ export function clearUserHistory(opts?: Oazapfts.RequestOpts) {
122
+ return oazapfts.ok(oazapfts.fetchJson<{
123
+ status: 204;
124
+ } | {
125
+ status: 403;
126
+ data: ErrorResponse;
127
+ } | {
128
+ status: 500;
129
+ data: ErrorResponse;
130
+ }>("/v1/search/history", {
131
+ ...opts,
132
+ method: "DELETE"
133
+ }));
134
+ }
135
+ /**
136
+ * Delete the logged-in user specific search history item.
137
+ */
138
+ export function deleteUserHistoryItem({ itemId }: {
139
+ itemId: string;
140
+ }, opts?: Oazapfts.RequestOpts) {
141
+ return oazapfts.ok(oazapfts.fetchJson<{
142
+ status: 204;
143
+ } | {
144
+ status: 403;
145
+ data: ErrorResponse;
146
+ } | {
147
+ status: 500;
148
+ data: ErrorResponse;
149
+ }>(`/v1/search/history/${encodeURIComponent(itemId)}`, {
150
+ ...opts,
151
+ method: "DELETE"
152
+ }));
153
+ }
@@ -1,120 +1,120 @@
1
- import apisItauJson from './apis-itau.json' assert { type: 'json' }
2
- import apisJson from './apis.json' assert { type: 'json' }
3
- import { NetworkClient } from './network/NetworkClient'
4
- import { Env, Tenant } from './network/types'
5
-
6
- type ApisKeys = keyof typeof apisJson;
7
-
8
- type ApiConfig = {
9
- url: Record<Env, string>,
10
- docs?: string,
11
- }
12
-
13
- type PartialApiConfig = {
14
- url: Partial<Record<Env, string>>,
15
- docs?: string
16
- }
17
-
18
- type Apis = Record<ApisKeys, ApiConfig>;
19
-
20
- type PartialApis = Partial<Record<ApisKeys, PartialApiConfig>>;
21
-
22
- type ApiAddress = {
23
- [api: string]: string,
24
- }
25
-
26
- let defaultApis: Apis = apisJson;
27
- let overrideApis: PartialApis = {};
28
-
29
- const apis: Record<Tenant, Apis> = {
30
- 'stackspot': apisJson,
31
- 'itau': apisItauJson,
32
- }
33
-
34
- /**
35
- * Returns the API catalog for the given tenant.
36
- *
37
- * @param tenant The current tenant (e.g., 'stackspot', 'itau').
38
- * @returns API catalog containing the URLs per environment.
39
- */
40
- export function getApisByTenant(tenant: Tenant) {
41
- return apis[tenant]
42
- }
43
-
44
- function transformApisToApiAddress(apis: Apis, env: Env): ApiAddress {
45
- const apiAddress: ApiAddress = {}
46
-
47
- for (const api in apis) {
48
- const key = api as ApisKeys
49
- apiAddress[key] = apis[key].url[env]
50
- }
51
-
52
- return apiAddress
53
- }
54
-
55
- /**
56
- * Searchs the default APIs configuration for the API object that matches the given baseURL.
57
- * @param baseUrl the base URL to search.
58
- * @param candidate the URL of the desired API to find.
59
- * @returns {boolean} true if the URL is found, otherwise false.
60
- */
61
- function matchesBaseUrl(baseUrl: Record<Env, string>, candidate: Record<Env, string>): boolean {
62
- const envs: Env[] = ['dev', 'stg', 'prd'];
63
-
64
- return envs.every(e => {
65
- if (candidate[e]) {
66
- return baseUrl[e] === candidate[e];
67
- }
68
- return true;
69
- });
70
- }
71
-
72
- /**
73
- * Returns the base URL for the given environment and tenant, applying any overrides if available
74
- *
75
- * @param baseURL the default API base URL.
76
- * @param targetEnv the target environment
77
- * @param tenant the current tenant.
78
- * @returns {string} the base URL for the given environment and tenant, applying any overrides if available.
79
- */
80
- export const getBaseUrlByTenantWithOverride = (baseUrl: Record<Env, string>, targetEnv: Env = 'prd', tenant: Tenant = 'stackspot'): string => {
81
- let matchesApiName: ApisKeys | null = null;
82
-
83
- for (const [apiName, config] of Object.entries(defaultApis) as [ApisKeys, ApiConfig][]) {
84
- if (matchesBaseUrl(baseUrl, config.url)) {
85
- matchesApiName = apiName;
86
- break;
87
- }
88
- }
89
-
90
- if (!matchesApiName) return ''
91
-
92
- const overrideUrl = overrideApis[matchesApiName]?.url?.[targetEnv]
93
- if (overrideUrl) {
94
- return overrideUrl;
95
- }
96
-
97
- const apis = getApisByTenant(tenant)
98
- return apis[matchesApiName]?.url?.[targetEnv];
99
- }
100
-
101
- /**
102
- * Sets the APIs addresses for override.
103
- * @param customApis a JSON object containing APIs address to override.
104
- */
105
- export const setApisOverride = (customApis: PartialApis) => {
106
- overrideApis = customApis;
107
- }
108
-
109
- /**
110
- * Sets the default APIs addresses for each environments.
111
- * @returns {Apis} an object containing APIs URLs grouped by api name and enviroments.
112
- */
113
- export const getApiAddresses = (): Apis => {
114
- return defaultApis;
115
- }
116
-
117
- export const apiAddresses = () => {
118
- const env = NetworkClient.getEnv()
119
- return transformApisToApiAddress(defaultApis, env)
120
- }
1
+ import apisItauJson from './apis-itau.json' assert { type: 'json' }
2
+ import apisJson from './apis.json' assert { type: 'json' }
3
+ import { NetworkClient } from './network/NetworkClient'
4
+ import { Env, Tenant } from './network/types'
5
+
6
+ type ApisKeys = keyof typeof apisJson;
7
+
8
+ type ApiConfig = {
9
+ url: Record<Env, string>,
10
+ docs?: string,
11
+ }
12
+
13
+ type PartialApiConfig = {
14
+ url: Partial<Record<Env, string>>,
15
+ docs?: string
16
+ }
17
+
18
+ type Apis = Record<ApisKeys, ApiConfig>;
19
+
20
+ type PartialApis = Partial<Record<ApisKeys, PartialApiConfig>>;
21
+
22
+ type ApiAddress = {
23
+ [api: string]: string,
24
+ }
25
+
26
+ let defaultApis: Apis = apisJson;
27
+ let overrideApis: PartialApis = {};
28
+
29
+ const apis: Record<Tenant, Apis> = {
30
+ 'stackspot': apisJson,
31
+ 'itau': apisItauJson,
32
+ }
33
+
34
+ /**
35
+ * Returns the API catalog for the given tenant.
36
+ *
37
+ * @param tenant The current tenant (e.g., 'stackspot', 'itau').
38
+ * @returns API catalog containing the URLs per environment.
39
+ */
40
+ export function getApisByTenant(tenant: Tenant) {
41
+ return apis[tenant]
42
+ }
43
+
44
+ function transformApisToApiAddress(apis: Apis, env: Env): ApiAddress {
45
+ const apiAddress: ApiAddress = {}
46
+
47
+ for (const api in apis) {
48
+ const key = api as ApisKeys
49
+ apiAddress[key] = apis[key].url[env]
50
+ }
51
+
52
+ return apiAddress
53
+ }
54
+
55
+ /**
56
+ * Searchs the default APIs configuration for the API object that matches the given baseURL.
57
+ * @param baseUrl the base URL to search.
58
+ * @param candidate the URL of the desired API to find.
59
+ * @returns {boolean} true if the URL is found, otherwise false.
60
+ */
61
+ function matchesBaseUrl(baseUrl: Record<Env, string>, candidate: Record<Env, string>): boolean {
62
+ const envs: Env[] = ['dev', 'stg', 'prd'];
63
+
64
+ return envs.every(e => {
65
+ if (candidate[e]) {
66
+ return baseUrl[e] === candidate[e];
67
+ }
68
+ return true;
69
+ });
70
+ }
71
+
72
+ /**
73
+ * Returns the base URL for the given environment and tenant, applying any overrides if available
74
+ *
75
+ * @param baseURL the default API base URL.
76
+ * @param targetEnv the target environment
77
+ * @param tenant the current tenant.
78
+ * @returns {string} the base URL for the given environment and tenant, applying any overrides if available.
79
+ */
80
+ export const getBaseUrlByTenantWithOverride = (baseUrl: Record<Env, string>, targetEnv: Env = 'prd', tenant: Tenant = 'stackspot'): string => {
81
+ let matchesApiName: ApisKeys | null = null;
82
+
83
+ for (const [apiName, config] of Object.entries(defaultApis) as [ApisKeys, ApiConfig][]) {
84
+ if (matchesBaseUrl(baseUrl, config.url)) {
85
+ matchesApiName = apiName;
86
+ break;
87
+ }
88
+ }
89
+
90
+ if (!matchesApiName) return ''
91
+
92
+ const overrideUrl = overrideApis[matchesApiName]?.url?.[targetEnv]
93
+ if (overrideUrl) {
94
+ return overrideUrl;
95
+ }
96
+
97
+ const apis = getApisByTenant(tenant)
98
+ return apis[matchesApiName]?.url?.[targetEnv];
99
+ }
100
+
101
+ /**
102
+ * Sets the APIs addresses for override.
103
+ * @param customApis a JSON object containing APIs address to override.
104
+ */
105
+ export const setApisOverride = (customApis: PartialApis) => {
106
+ overrideApis = customApis;
107
+ }
108
+
109
+ /**
110
+ * Sets the default APIs addresses for each environments.
111
+ * @returns {Apis} an object containing APIs URLs grouped by api name and enviroments.
112
+ */
113
+ export const getApiAddresses = (): Apis => {
114
+ return defaultApis;
115
+ }
116
+
117
+ export const apiAddresses = () => {
118
+ const env = NetworkClient.getEnv()
119
+ return transformApisToApiAddress(defaultApis, env)
120
+ }