@camunda/ccma-api 0.0.1 → 0.0.2

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 (199) hide show
  1. package/package.json +10 -10
  2. package/dist/index.d.ts +0 -97
  3. package/dist/index.js +0 -153
  4. package/dist/index.js.map +0 -7
  5. package/dist/services/accounts/accounts.data-export.service.d.ts +0 -13
  6. package/dist/services/accounts/accounts.data-export.service.js +0 -41
  7. package/dist/services/accounts/accounts.data-export.service.js.map +0 -7
  8. package/dist/services/accounts/accounts.valuemetrics.service.d.ts +0 -8
  9. package/dist/services/accounts/accounts.valuemetrics.service.js +0 -1
  10. package/dist/services/accounts/accounts.valuemetrics.service.js.map +0 -7
  11. package/dist/services/accounts/bot.service.d.ts +0 -21
  12. package/dist/services/accounts/bot.service.js +0 -74
  13. package/dist/services/accounts/bot.service.js.map +0 -7
  14. package/dist/services/accounts/challenge.service.d.ts +0 -296
  15. package/dist/services/accounts/challenge.service.js +0 -475
  16. package/dist/services/accounts/challenge.service.js.map +0 -7
  17. package/dist/services/accounts/connections.service.d.ts +0 -27
  18. package/dist/services/accounts/connections.service.js +0 -41
  19. package/dist/services/accounts/connections.service.js.map +0 -7
  20. package/dist/services/accounts/dashboards.service.d.ts +0 -8
  21. package/dist/services/accounts/dashboards.service.js +0 -42
  22. package/dist/services/accounts/dashboards.service.js.map +0 -7
  23. package/dist/services/accounts/early-access-features.service.d.ts +0 -34
  24. package/dist/services/accounts/early-access-features.service.js +0 -67
  25. package/dist/services/accounts/early-access-features.service.js.map +0 -7
  26. package/dist/services/accounts/genericCache.service.d.ts +0 -13
  27. package/dist/services/accounts/genericCache.service.js +0 -80
  28. package/dist/services/accounts/genericCache.service.js.map +0 -7
  29. package/dist/services/accounts/hdp.service.d.ts +0 -52
  30. package/dist/services/accounts/hdp.service.js +0 -180
  31. package/dist/services/accounts/hdp.service.js.map +0 -7
  32. package/dist/services/accounts/offboarding.service.d.ts +0 -18
  33. package/dist/services/accounts/offboarding.service.js +0 -48
  34. package/dist/services/accounts/offboarding.service.js.map +0 -7
  35. package/dist/services/accounts/organization-members.service.d.ts +0 -68
  36. package/dist/services/accounts/organization-members.service.js +0 -216
  37. package/dist/services/accounts/organization-members.service.js.map +0 -7
  38. package/dist/services/accounts/orgs.service.d.ts +0 -273
  39. package/dist/services/accounts/orgs.service.js +0 -978
  40. package/dist/services/accounts/orgs.service.js.map +0 -7
  41. package/dist/services/accounts/salesplan.service.d.ts +0 -7
  42. package/dist/services/accounts/salesplan.service.js +0 -40
  43. package/dist/services/accounts/salesplan.service.js.map +0 -7
  44. package/dist/services/accounts/spam-detection.service.d.ts +0 -8
  45. package/dist/services/accounts/spam-detection.service.js +0 -72
  46. package/dist/services/accounts/spam-detection.service.js.map +0 -7
  47. package/dist/services/accounts/stats.service.d.ts +0 -7
  48. package/dist/services/accounts/stats.service.js +0 -40
  49. package/dist/services/accounts/stats.service.js.map +0 -7
  50. package/dist/services/accounts/teams.service.d.ts +0 -85
  51. package/dist/services/accounts/teams.service.js +0 -516
  52. package/dist/services/accounts/teams.service.js.map +0 -7
  53. package/dist/services/accounts/usage-alerts.service.d.ts +0 -34
  54. package/dist/services/accounts/usage-alerts.service.js +0 -112
  55. package/dist/services/accounts/usage-alerts.service.js.map +0 -7
  56. package/dist/services/accounts/users.service.d.ts +0 -101
  57. package/dist/services/accounts/users.service.js +0 -444
  58. package/dist/services/accounts/users.service.js.map +0 -7
  59. package/dist/services/alerts/alerts.service.d.ts +0 -59
  60. package/dist/services/alerts/alerts.service.js +0 -234
  61. package/dist/services/alerts/alerts.service.js.map +0 -7
  62. package/dist/services/analytic-bridge/analytic-bridge.service.d.ts +0 -23
  63. package/dist/services/analytic-bridge/analytic-bridge.service.js +0 -86
  64. package/dist/services/analytic-bridge/analytic-bridge.service.js.map +0 -7
  65. package/dist/services/audit-logger/audit-logger.service.d.ts +0 -27
  66. package/dist/services/audit-logger/audit-logger.service.js +0 -108
  67. package/dist/services/audit-logger/audit-logger.service.js.map +0 -7
  68. package/dist/services/auth0/auth0.service.d.ts +0 -15
  69. package/dist/services/auth0/auth0.service.js +0 -40
  70. package/dist/services/auth0/auth0.service.js.map +0 -7
  71. package/dist/services/comm-bridge/comm-bridge.service.d.ts +0 -33
  72. package/dist/services/comm-bridge/comm-bridge.service.js +0 -40
  73. package/dist/services/comm-bridge/comm-bridge.service.js.map +0 -7
  74. package/dist/services/console/console.admin.service.d.ts +0 -328
  75. package/dist/services/console/console.admin.service.js +0 -1526
  76. package/dist/services/console/console.admin.service.js.map +0 -7
  77. package/dist/services/console/console.alerts.service.d.ts +0 -69
  78. package/dist/services/console/console.alerts.service.js +0 -160
  79. package/dist/services/console/console.alerts.service.js.map +0 -7
  80. package/dist/services/console/console.api-clients.service.d.ts +0 -48
  81. package/dist/services/console/console.api-clients.service.js +0 -123
  82. package/dist/services/console/console.api-clients.service.js.map +0 -7
  83. package/dist/services/console/console.backup-schedule.service.d.ts +0 -21
  84. package/dist/services/console/console.backup-schedule.service.js +0 -67
  85. package/dist/services/console/console.backup-schedule.service.js.map +0 -7
  86. package/dist/services/console/console.byok-scripts.service.d.ts +0 -12
  87. package/dist/services/console/console.byok-scripts.service.js +0 -92
  88. package/dist/services/console/console.byok-scripts.service.js.map +0 -7
  89. package/dist/services/console/console.byom-monitoring.service.d.ts +0 -58
  90. package/dist/services/console/console.byom-monitoring.service.js +0 -177
  91. package/dist/services/console/console.byom-monitoring.service.js.map +0 -7
  92. package/dist/services/console/console.cluster-clients.service.d.ts +0 -55
  93. package/dist/services/console/console.cluster-clients.service.js +0 -123
  94. package/dist/services/console/console.cluster-clients.service.js.map +0 -7
  95. package/dist/services/console/console.cluster-parameters.service.d.ts +0 -64
  96. package/dist/services/console/console.cluster-parameters.service.js +0 -39
  97. package/dist/services/console/console.cluster-parameters.service.js.map +0 -7
  98. package/dist/services/console/console.cluster.service.d.ts +0 -114
  99. package/dist/services/console/console.cluster.service.js +0 -271
  100. package/dist/services/console/console.cluster.service.js.map +0 -7
  101. package/dist/services/console/console.clusterBulkOperation.service.d.ts +0 -20
  102. package/dist/services/console/console.clusterBulkOperation.service.js +0 -199
  103. package/dist/services/console/console.clusterBulkOperation.service.js.map +0 -7
  104. package/dist/services/console/console.clusterplan.modification.service.d.ts +0 -33
  105. package/dist/services/console/console.clusterplan.modification.service.js +0 -231
  106. package/dist/services/console/console.clusterplan.modification.service.js.map +0 -7
  107. package/dist/services/console/console.clusterplan.service.d.ts +0 -21
  108. package/dist/services/console/console.clusterplan.service.js +0 -64
  109. package/dist/services/console/console.clusterplan.service.js.map +0 -7
  110. package/dist/services/console/console.connector-secrets.service.d.ts +0 -30
  111. package/dist/services/console/console.connector-secrets.service.js +0 -125
  112. package/dist/services/console/console.connector-secrets.service.js.map +0 -7
  113. package/dist/services/console/console.custommetrics.service.d.ts +0 -10
  114. package/dist/services/console/console.custommetrics.service.js +0 -43
  115. package/dist/services/console/console.custommetrics.service.js.map +0 -7
  116. package/dist/services/console/console.hotbackups.service.d.ts +0 -34
  117. package/dist/services/console/console.hotbackups.service.js +0 -120
  118. package/dist/services/console/console.hotbackups.service.js.map +0 -7
  119. package/dist/services/console/console.ip-whitelist.service.d.ts +0 -15
  120. package/dist/services/console/console.ip-whitelist.service.js +0 -36
  121. package/dist/services/console/console.ip-whitelist.service.js.map +0 -7
  122. package/dist/services/console/console.jobs.saas.service.d.ts +0 -70
  123. package/dist/services/console/console.jobs.saas.service.js +0 -139
  124. package/dist/services/console/console.jobs.saas.service.js.map +0 -7
  125. package/dist/services/console/console.jobs.sm.service.d.ts +0 -57
  126. package/dist/services/console/console.jobs.sm.service.js +0 -208
  127. package/dist/services/console/console.jobs.sm.service.js.map +0 -7
  128. package/dist/services/console/console.m2m.service.d.ts +0 -23
  129. package/dist/services/console/console.m2m.service.js +0 -94
  130. package/dist/services/console/console.m2m.service.js.map +0 -7
  131. package/dist/services/console/console.secure-connectivity.service.d.ts +0 -41
  132. package/dist/services/console/console.secure-connectivity.service.js +0 -129
  133. package/dist/services/console/console.secure-connectivity.service.js.map +0 -7
  134. package/dist/services/console/console.valuemetrics.service.d.ts +0 -17
  135. package/dist/services/console/console.valuemetrics.service.js +0 -110
  136. package/dist/services/console/console.valuemetrics.service.js.map +0 -7
  137. package/dist/services/console/generation.service.d.ts +0 -21
  138. package/dist/services/console/generation.service.js +0 -106
  139. package/dist/services/console/generation.service.js.map +0 -7
  140. package/dist/services/github/github.service.d.ts +0 -73
  141. package/dist/services/github/github.service.js +0 -272
  142. package/dist/services/github/github.service.js.map +0 -7
  143. package/dist/services/hibob/hibob.service.d.ts +0 -74
  144. package/dist/services/hibob/hibob.service.js +0 -125
  145. package/dist/services/hibob/hibob.service.js.map +0 -7
  146. package/dist/services/hubspot/hubspot.service.d.ts +0 -50
  147. package/dist/services/hubspot/hubspot.service.js +0 -119
  148. package/dist/services/hubspot/hubspot.service.js.map +0 -7
  149. package/dist/services/litellm/litellm.service.d.ts +0 -290
  150. package/dist/services/litellm/litellm.service.js +0 -392
  151. package/dist/services/litellm/litellm.service.js.map +0 -7
  152. package/dist/services/login/login.service.d.ts +0 -15
  153. package/dist/services/login/login.service.js +0 -66
  154. package/dist/services/login/login.service.js.map +0 -7
  155. package/dist/services/mixpanel/mixpanel.service.d.ts +0 -16
  156. package/dist/services/mixpanel/mixpanel.service.js +0 -86
  157. package/dist/services/mixpanel/mixpanel.service.js.map +0 -7
  158. package/dist/services/notifications/notifications.service.d.ts +0 -7
  159. package/dist/services/notifications/notifications.service.js +0 -38
  160. package/dist/services/notifications/notifications.service.js.map +0 -7
  161. package/dist/services/slack/slack-blockkit.service.d.ts +0 -28
  162. package/dist/services/slack/slack-blockkit.service.js +0 -45
  163. package/dist/services/slack/slack-blockkit.service.js.map +0 -7
  164. package/dist/services/slack/slack.service.d.ts +0 -31
  165. package/dist/services/slack/slack.service.js +0 -118
  166. package/dist/services/slack/slack.service.js.map +0 -7
  167. package/dist/services/telemetry/telemetry.service.d.ts +0 -16
  168. package/dist/services/telemetry/telemetry.service.js +0 -85
  169. package/dist/services/telemetry/telemetry.service.js.map +0 -7
  170. package/dist/services/token-issuer/token-issuer.jwks.service.d.ts +0 -13
  171. package/dist/services/token-issuer/token-issuer.jwks.service.js +0 -76
  172. package/dist/services/token-issuer/token-issuer.jwks.service.js.map +0 -7
  173. package/dist/services/wordpress/wordpress.service.d.ts +0 -15
  174. package/dist/services/wordpress/wordpress.service.js +0 -111
  175. package/dist/services/wordpress/wordpress.service.js.map +0 -7
  176. package/dist/types/general.types.d.ts +0 -61
  177. package/dist/types/general.types.js +0 -1
  178. package/dist/types/general.types.js.map +0 -7
  179. package/dist/utils/api.d.ts +0 -31
  180. package/dist/utils/api.js +0 -400
  181. package/dist/utils/api.js.map +0 -7
  182. package/dist/utils/cache.d.ts +0 -7
  183. package/dist/utils/cache.js +0 -25
  184. package/dist/utils/cache.js.map +0 -7
  185. package/dist/utils/ccma-metrics.d.ts +0 -18
  186. package/dist/utils/ccma-metrics.js +0 -37
  187. package/dist/utils/ccma-metrics.js.map +0 -7
  188. package/dist/utils/environments.d.ts +0 -11
  189. package/dist/utils/environments.js +0 -148
  190. package/dist/utils/environments.js.map +0 -7
  191. package/dist/utils/errors.d.ts +0 -5
  192. package/dist/utils/errors.js +0 -11
  193. package/dist/utils/errors.js.map +0 -7
  194. package/dist/utils/frontendCache.d.ts +0 -26
  195. package/dist/utils/frontendCache.js +0 -121
  196. package/dist/utils/frontendCache.js.map +0 -7
  197. package/dist/utils/token-issuer.utils.d.ts +0 -8
  198. package/dist/utils/token-issuer.utils.js +0 -19
  199. package/dist/utils/token-issuer.utils.js.map +0 -7
package/dist/utils/api.js DELETED
@@ -1,400 +0,0 @@
1
- import { getEnvParam } from "./environments.js";
2
- import { frontendCache } from "./frontendCache.js";
3
- function sendMetrics(payload, type, options) {
4
- if (payload.config.metrics) {
5
- if (payload.config.metrics.types.includes(type)) {
6
- let durationBucket;
7
- if (options?.duration) {
8
- if (options.duration < 100) {
9
- durationBucket = "0 | <100ms";
10
- } else if (options.duration < 200) {
11
- durationBucket = "1 | <200ms";
12
- } else if (options.duration < 500) {
13
- durationBucket = "2 | <500ms";
14
- } else if (options.duration < 1e3) {
15
- durationBucket = "3 | <1s";
16
- } else {
17
- durationBucket = "4 | >=1s";
18
- }
19
- }
20
- let error = "other";
21
- if (options?.error) {
22
- try {
23
- const errorMessage = options.error;
24
- if (errorMessage.startsWith("<!DOCTYPE html>")) {
25
- error = "html-response";
26
- } else if (errorMessage.includes("UND_ERR_CONNECT_TIMEOUT")) {
27
- error = "connect-timeout";
28
- }
29
- } catch (_error) {
30
- }
31
- } else {
32
- error = "unset";
33
- }
34
- const metrics = {
35
- ...payload.metricsDetails,
36
- eventType: type,
37
- durationBucket,
38
- statusCode: options?.statusCode,
39
- error
40
- };
41
- try {
42
- payload.config.metrics.callback(metrics);
43
- } catch (metricsCallbackError) {
44
- log(payload, "debug", `Failed to send metrics`, {
45
- error: metricsCallbackError,
46
- metrics
47
- });
48
- }
49
- }
50
- }
51
- }
52
- function log(payload, type, message, additionalData) {
53
- if (payload.config.logger) {
54
- const messageParts = [];
55
- messageParts.push(payload.metricsDetails?.method?.name);
56
- messageParts.push(
57
- `${payload.metricsDetails?.target?.name} (${payload.metricsDetails?.target?.type})`
58
- );
59
- messageParts.push(message);
60
- let body;
61
- if (payload.body) {
62
- body = JSON.parse(JSON.stringify(payload.body));
63
- for (const key of Object.keys(body)) {
64
- if (key.toLowerCase().includes("password") || key.toLowerCase().includes("secret") || key.toLowerCase().includes("token")) {
65
- body[key] = "********";
66
- }
67
- }
68
- }
69
- let fullUrl = "unset";
70
- if (payload.base) {
71
- try {
72
- const base = getEnvParam(payload.base.id, payload.config);
73
- fullUrl = base ? `${base}/${payload.url}` : payload.url;
74
- } catch (_error) {
75
- fullUrl = `failed to get base url for ${payload.base.id}`;
76
- }
77
- }
78
- let url = `${payload.url}`.toLowerCase();
79
- if (url.includes("secret") || url.includes("password")) {
80
- url = url.split("?")[0];
81
- }
82
- const data = {
83
- base: payload.base,
84
- method: payload.method,
85
- url,
86
- fullUrl,
87
- retry: payload.retry,
88
- body,
89
- context: payload.metricsDetails,
90
- ...additionalData
91
- };
92
- payload.config.logger[type](messageParts.join(" > "), { data });
93
- }
94
- }
95
- function rateLimitWaitingTime(attempt) {
96
- const noise = Math.random() * 100;
97
- const waitingTime = 2 ** attempt * 1e3 + noise;
98
- return Math.floor(waitingTime);
99
- }
100
- async function request(payload) {
101
- log(payload, "debug", "starting request");
102
- sendMetrics(payload, "request");
103
- try {
104
- if (payload.config.frontendCaching?.enabled) {
105
- frontendCache.configure(payload.config.frontendCaching);
106
- }
107
- } catch (_cacheConfigError) {
108
- }
109
- let token;
110
- if (payload.config.auth) {
111
- token = await payload.config.auth.getToken();
112
- }
113
- const headers = payload.headers ?? {};
114
- if (token) {
115
- headers.Authorization = `Bearer ${token}`;
116
- }
117
- const type = payload.type ?? "json";
118
- let body;
119
- if (type) {
120
- switch (type) {
121
- case "json":
122
- headers["Content-Type"] = "application/json";
123
- body = payload.body ? JSON.stringify(payload.body) : void 0;
124
- break;
125
- case "text":
126
- headers["Content-Type"] = "text/plain";
127
- body = payload.body ? JSON.stringify(payload.body) : void 0;
128
- break;
129
- case "form":
130
- if (payload.body) {
131
- const formData = new URLSearchParams();
132
- Object.keys(payload.body).forEach((key) => {
133
- formData.append(key, payload.body[key]);
134
- });
135
- body = formData;
136
- }
137
- break;
138
- }
139
- }
140
- let base;
141
- if (payload.base) {
142
- try {
143
- base = getEnvParam(payload.base.id, payload.config);
144
- } catch (error) {
145
- log(payload, "error", `Failed to get base url for ${payload.base.id}`, {
146
- error
147
- });
148
- throw error;
149
- }
150
- }
151
- const url = base ? `${base}/${payload.url}` : payload.url;
152
- let serveCachedAndReturnAfterNetwork = false;
153
- if (payload.method === "get" && payload.config.frontendCaching?.enabled) {
154
- try {
155
- const cached = await frontendCache.get("get", url);
156
- if (cached) {
157
- const fresh = frontendCache.isFresh(cached);
158
- if (payload.onCachedResponse) {
159
- payload.onCachedResponse(cached.payload, { fresh, source: "cache" });
160
- if (!fresh) {
161
- log(payload, "debug", "cache stale, refreshing in background");
162
- serveCachedAndReturnAfterNetwork = true;
163
- } else {
164
- log(payload, "debug", "cache fresh, returning early");
165
- sendMetrics(payload, "success", { duration: 0, statusCode: "200" });
166
- return {
167
- // eslint-disable-next-line id-length
168
- ok: true,
169
- status: 200,
170
- statusText: "cached",
171
- body: cached.payload,
172
- meta: { duration: 0 }
173
- };
174
- }
175
- } else if (fresh) {
176
- log(payload, "debug", "cache hit, returning cached response");
177
- sendMetrics(payload, "success", { duration: 0, statusCode: "200" });
178
- return {
179
- // eslint-disable-next-line id-length
180
- ok: true,
181
- status: 200,
182
- statusText: "cached",
183
- body: cached.payload,
184
- meta: { duration: 0 }
185
- };
186
- } else {
187
- log(payload, "debug", "cache stale, proceeding with network request");
188
- }
189
- }
190
- } catch (_cacheGetError) {
191
- }
192
- }
193
- const start = performance.now();
194
- const proxyAgent = payload.config.proxyAgent ?? {};
195
- try {
196
- const fetchResponse = await fetch(url, {
197
- signal: payload.config.timeout ? AbortSignal.timeout(payload.config.timeout) : void 0,
198
- method: payload.method.toUpperCase(),
199
- headers,
200
- body,
201
- ...proxyAgent
202
- });
203
- const end = performance.now();
204
- const duration = end - start;
205
- if ([429].includes(fetchResponse.status)) {
206
- log(payload, "info", "rate limited");
207
- sendMetrics(payload, "rate-limit-retry", {
208
- duration,
209
- statusCode: String(fetchResponse.status)
210
- });
211
- const remaining = payload.retry?.remaining ?? 8;
212
- const attempts = payload.retry?.attempts ?? 1;
213
- if (remaining > 0) {
214
- let waitingTime = rateLimitWaitingTime(attempts);
215
- if (fetchResponse.headers.has("x-ratelimit-reset")) {
216
- const rateLimitHeader = fetchResponse.headers.get("x-ratelimit-reset");
217
- log(
218
- payload,
219
- "debug",
220
- `rate limited, found x-ratelimit-reset header: ${rateLimitHeader}`
221
- );
222
- const rateLimitHeaderNumber = Number(rateLimitHeader);
223
- if (Number.isNaN(rateLimitHeaderNumber)) {
224
- waitingTime = Date.parse(rateLimitHeader ?? "0") - Date.now();
225
- } else {
226
- waitingTime = rateLimitHeaderNumber - Date.now();
227
- }
228
- }
229
- if (waitingTime < 0 || waitingTime > 18e4) {
230
- waitingTime = rateLimitWaitingTime(attempts);
231
- }
232
- log(
233
- payload,
234
- "debug",
235
- `rate limited, attempt ${attempts}, remaining ${remaining}, waiting ${waitingTime}ms`
236
- );
237
- await new Promise((resolve) => {
238
- setTimeout(resolve, waitingTime);
239
- });
240
- payload.retry = {
241
- attempts: attempts + 1,
242
- remaining: remaining - 1
243
- };
244
- return request(payload);
245
- }
246
- log(payload, "debug", `rate limited, no more retries`);
247
- }
248
- const response = {
249
- // eslint-disable-next-line id-length
250
- ok: fetchResponse.ok,
251
- status: fetchResponse.status,
252
- statusText: fetchResponse.statusText,
253
- meta: {
254
- duration
255
- }
256
- };
257
- const responseType = payload.responseType ?? type;
258
- if (response.ok) {
259
- log(payload, "debug", `request successful in ${Math.floor(duration)}ms`, {
260
- baseUrl: base
261
- });
262
- sendMetrics(payload, "success", {
263
- duration,
264
- statusCode: String(fetchResponse.status)
265
- });
266
- switch (responseType) {
267
- case "json":
268
- try {
269
- response.body = await fetchResponse.json();
270
- } catch (_error) {
271
- log(
272
- payload,
273
- "debug",
274
- `Failed to parse json body. Returning empty object.`,
275
- {
276
- baseUrl: base
277
- }
278
- );
279
- response.body = {};
280
- try {
281
- const responseBodyText = await fetchResponse.text();
282
- log(payload, "debug", `Response body text`, {
283
- baseUrl: base,
284
- responseBodyText,
285
- status: fetchResponse.status
286
- });
287
- } catch (textError) {
288
- log(payload, "debug", `Failed to parse response body text.`, {
289
- baseUrl: base,
290
- status: fetchResponse.status,
291
- error: textError
292
- });
293
- }
294
- }
295
- break;
296
- case "text":
297
- response.body = await fetchResponse.text();
298
- break;
299
- default:
300
- response.body = await fetchResponse.text();
301
- }
302
- if (payload.method === "get" && payload.config.frontendCaching?.enabled && response.body !== void 0) {
303
- try {
304
- await frontendCache.set("get", url, response.body);
305
- log(payload, "debug", "cache store successful");
306
- } catch (_cacheSetError) {
307
- }
308
- }
309
- } else {
310
- let statusText = fetchResponse.statusText;
311
- try {
312
- statusText = await fetchResponse.text();
313
- } catch (_error) {
314
- }
315
- response.statusText = statusText;
316
- log(
317
- payload,
318
- "debug",
319
- `request failed with status ${response.status}: ${statusText}`,
320
- {
321
- baseUrl: base
322
- }
323
- );
324
- let type2 = "error";
325
- const noErrorStatusCodes = [];
326
- switch (payload.metricsDetails.target.name) {
327
- case "auth0":
328
- noErrorStatusCodes.push(...[400, 404, 409]);
329
- break;
330
- case "accounts":
331
- case "console":
332
- noErrorStatusCodes.push(...[404, 409]);
333
- if (payload.metricsDetails.method.name === "createTemporaryCluster") {
334
- noErrorStatusCodes.push(...[400, 403, 412]);
335
- }
336
- if ([
337
- "ConsoleM2MService.verifyZeebeClient",
338
- "ConsoleM2MService.verifyApiClient"
339
- ].includes(payload.metricsDetails.method.name)) {
340
- noErrorStatusCodes.push(...[401]);
341
- }
342
- if (payload.metricsDetails.method.name === "OrgsService.createAndReturnSocialLoginUser") {
343
- noErrorStatusCodes.push(
344
- ...[
345
- // onboard user, user already has an org
346
- 400,
347
- // existing extSSO-connection
348
- 412
349
- ]
350
- );
351
- }
352
- break;
353
- }
354
- if (noErrorStatusCodes.includes(response.status)) {
355
- type2 = "success";
356
- }
357
- sendMetrics(payload, type2, {
358
- duration,
359
- statusCode: String(fetchResponse.status),
360
- error: statusText
361
- });
362
- }
363
- if (serveCachedAndReturnAfterNetwork && response.ok) {
364
- log(payload, "debug", "stale cache updated, returning new data");
365
- }
366
- return response;
367
- } catch (error) {
368
- log(payload, "error", `request failed with no status`, {
369
- baseUrl: base,
370
- error
371
- });
372
- const duration = performance.now() - start;
373
- let errorMessage;
374
- if (error?.cause?.code) {
375
- errorMessage = error?.cause?.code;
376
- } else if (error?.message) {
377
- errorMessage = error?.message;
378
- }
379
- sendMetrics(payload, "error", {
380
- statusCode: "fetch-error",
381
- duration,
382
- error: errorMessage
383
- });
384
- const response = {
385
- // eslint-disable-next-line id-length
386
- ok: false,
387
- status: 500,
388
- statusText: "fetch error",
389
- meta: {
390
- duration
391
- }
392
- };
393
- return response;
394
- }
395
- }
396
- export {
397
- log,
398
- request
399
- };
400
- //# sourceMappingURL=api.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/utils/api.ts"],
4
- "sourcesContent": ["/*\n * Copyright Camunda Services GmbH and/or licensed to Camunda Services GmbH\n * under one or more contributor license agreements. Licensed under a commercial license.\n * You may not use this file except in compliance with the commercial license.\n */\n\nimport type {\n RequestBaseCustomMetricsDetailsType,\n RequestBaseMethodType,\n RequestBaseParams,\n RequestBaseServiceContext,\n} from '../types/general.types.js'\nimport { getEnvParam, type ServiceName } from './environments.js'\nimport { frontendCache } from './frontendCache.js'\n\nexport interface RequestPayload extends RequestBaseParams {\n base?: {\n id: ServiceName\n }\n url: string\n method: RequestBaseMethodType\n headers?: { [key: string]: string }\n type?: 'json' | 'text' | 'form' | 'none'\n responseType?: 'json' | 'text' | 'none'\n retry?: {\n attempts: number\n remaining: number\n }\n body?: any\n metricsDetails: RequestBaseServiceContext\n}\n\nexport interface Response<T> {\n body?: T\n status: number\n statusText?: string\n ok: boolean\n meta: {\n duration: number\n }\n}\n\nfunction sendMetrics(\n payload: RequestPayload,\n type: RequestBaseCustomMetricsDetailsType,\n options?: {\n duration?: number\n statusCode?: string\n error?: string\n },\n) {\n if (payload.config.metrics) {\n if (payload.config.metrics.types.includes(type)) {\n let durationBucket: string | undefined\n if (options?.duration) {\n if (options.duration < 100) {\n durationBucket = '0 | <100ms'\n } else if (options.duration < 200) {\n durationBucket = '1 | <200ms'\n } else if (options.duration < 500) {\n durationBucket = '2 | <500ms'\n } else if (options.duration < 1000) {\n durationBucket = '3 | <1s'\n } else {\n durationBucket = '4 | >=1s'\n }\n }\n\n // only add normalized errors as labels\n let error = 'other'\n if (options?.error) {\n try {\n const errorMessage = options.error\n if (errorMessage.startsWith('<!DOCTYPE html>')) {\n error = 'html-response'\n } else if (errorMessage.includes('UND_ERR_CONNECT_TIMEOUT')) {\n error = 'connect-timeout'\n }\n } catch (_error) {\n // ignore it\n }\n } else {\n error = 'unset'\n }\n\n const metrics: RequestBaseServiceContext = {\n ...payload.metricsDetails,\n eventType: type,\n durationBucket,\n statusCode: options?.statusCode,\n error,\n }\n try {\n payload.config.metrics.callback(metrics)\n } catch (metricsCallbackError) {\n log(payload, 'debug', `Failed to send metrics`, {\n error: metricsCallbackError,\n metrics,\n })\n }\n }\n }\n}\n\nexport function log(\n payload: RequestPayload,\n type: 'debug' | 'info' | 'error',\n message: string,\n additionalData?: any,\n) {\n if (payload.config.logger) {\n const messageParts: string[] = []\n messageParts.push(payload.metricsDetails?.method?.name)\n messageParts.push(\n `${payload.metricsDetails?.target?.name} (${payload.metricsDetails?.target?.type})`,\n )\n messageParts.push(message)\n let body: any\n if (payload.body) {\n body = JSON.parse(JSON.stringify(payload.body))\n for (const key of Object.keys(body)) {\n if (\n key.toLowerCase().includes('password') ||\n key.toLowerCase().includes('secret') ||\n key.toLowerCase().includes('token')\n ) {\n body[key] = '********'\n }\n }\n }\n\n let fullUrl = 'unset'\n\n if (payload.base) {\n try {\n const base = getEnvParam(payload.base.id, payload.config)\n fullUrl = base ? `${base}/${payload.url}` : payload.url\n } catch (_error) {\n fullUrl = `failed to get base url for ${payload.base.id}`\n }\n }\n\n let url = `${payload.url}`.toLowerCase()\n if (url.includes('secret') || url.includes('password')) {\n url = url.split('?')[0]\n }\n\n const data = {\n base: payload.base,\n method: payload.method,\n url,\n fullUrl,\n retry: payload.retry,\n body,\n context: payload.metricsDetails,\n ...additionalData,\n }\n payload.config.logger[type](messageParts.join(' > '), { data })\n }\n}\n\nfunction rateLimitWaitingTime(attempt: number): number {\n const noise = Math.random() * 100\n const waitingTime = 2 ** attempt * 1000 + noise\n return Math.floor(waitingTime)\n}\n\nexport async function request<T>(\n payload: RequestPayload,\n): Promise<Response<T>> {\n log(payload, 'debug', 'starting request')\n sendMetrics(payload, 'request')\n // configure frontend cache if enabled (browser only)\n try {\n if (payload.config.frontendCaching?.enabled) {\n frontendCache.configure(payload.config.frontendCaching)\n }\n } catch (_cacheConfigError) {\n // ignore configuration errors silently\n }\n let token\n if (payload.config.auth) {\n token = await payload.config.auth.getToken()\n }\n const headers: { [key: string]: string } = payload.headers ?? {}\n if (token) {\n headers.Authorization = `Bearer ${token}`\n }\n const type = payload.type ?? 'json'\n let body\n if (type) {\n switch (type) {\n case 'json':\n headers['Content-Type'] = 'application/json'\n body = payload.body ? JSON.stringify(payload.body) : undefined\n break\n case 'text':\n headers['Content-Type'] = 'text/plain'\n body = payload.body ? JSON.stringify(payload.body) : undefined\n break\n case 'form':\n if (payload.body) {\n const formData = new URLSearchParams()\n Object.keys(payload.body).forEach((key) => {\n formData.append(key, payload.body[key])\n })\n body = formData\n }\n break\n }\n }\n let base\n if (payload.base) {\n try {\n base = getEnvParam(payload.base.id, payload.config)\n } catch (error) {\n log(payload, 'error', `Failed to get base url for ${payload.base.id}`, {\n error,\n })\n throw error\n }\n }\n const url = base ? `${base}/${payload.url}` : payload.url\n\n // Attempt cache read for GET requests (stale-while-revalidate when callback supplied)\n let serveCachedAndReturnAfterNetwork = false\n if (payload.method === 'get' && payload.config.frontendCaching?.enabled) {\n try {\n const cached = await frontendCache.get<T>('get', url)\n if (cached) {\n const fresh = frontendCache.isFresh(cached)\n if (payload.onCachedResponse) {\n payload.onCachedResponse(cached.payload, { fresh, source: 'cache' })\n if (!fresh) {\n log(payload, 'debug', 'cache stale, refreshing in background')\n serveCachedAndReturnAfterNetwork = true\n } else {\n log(payload, 'debug', 'cache fresh, returning early')\n sendMetrics(payload, 'success', { duration: 0, statusCode: '200' })\n return {\n // eslint-disable-next-line id-length\n ok: true,\n status: 200,\n statusText: 'cached',\n body: cached.payload,\n meta: { duration: 0 },\n }\n }\n } else if (fresh) {\n // no callback but fresh -> return directly\n log(payload, 'debug', 'cache hit, returning cached response')\n sendMetrics(payload, 'success', { duration: 0, statusCode: '200' })\n return {\n // eslint-disable-next-line id-length\n ok: true,\n status: 200,\n statusText: 'cached',\n body: cached.payload,\n meta: { duration: 0 },\n }\n } else {\n log(payload, 'debug', 'cache stale, proceeding with network request')\n }\n }\n } catch (_cacheGetError) {\n // ignore cache errors\n }\n }\n const start = performance.now()\n const proxyAgent = payload.config.proxyAgent ?? {}\n try {\n const fetchResponse = await fetch(url, {\n signal: payload.config.timeout\n ? AbortSignal.timeout(payload.config.timeout)\n : undefined,\n method: payload.method.toUpperCase(),\n headers,\n body,\n ...proxyAgent,\n })\n const end = performance.now()\n const duration = end - start\n\n if ([429].includes(fetchResponse.status)) {\n // rate limiting, retry\n log(payload, 'info', 'rate limited')\n sendMetrics(payload, 'rate-limit-retry', {\n duration,\n statusCode: String(fetchResponse.status),\n })\n const remaining = payload.retry?.remaining ?? 8\n const attempts = payload.retry?.attempts ?? 1\n if (remaining > 0) {\n let waitingTime = rateLimitWaitingTime(attempts)\n if (fetchResponse.headers.has('x-ratelimit-reset')) {\n const rateLimitHeader = fetchResponse.headers.get('x-ratelimit-reset')\n log(\n payload,\n 'debug',\n `rate limited, found x-ratelimit-reset header: ${rateLimitHeader}`,\n )\n const rateLimitHeaderNumber = Number(rateLimitHeader)\n if (Number.isNaN(rateLimitHeaderNumber)) {\n waitingTime = Date.parse(rateLimitHeader ?? '0') - Date.now()\n } else {\n waitingTime = rateLimitHeaderNumber - Date.now()\n }\n }\n if (waitingTime < 0 || waitingTime > 180000) {\n waitingTime = rateLimitWaitingTime(attempts)\n }\n log(\n payload,\n 'debug',\n `rate limited, attempt ${attempts}, remaining ${remaining}, waiting ${waitingTime}ms`,\n )\n await new Promise((resolve) => {\n setTimeout(resolve, waitingTime)\n })\n // eslint-disable-next-line require-atomic-updates\n payload.retry = {\n attempts: attempts + 1,\n remaining: remaining - 1,\n }\n return request(payload)\n }\n log(payload, 'debug', `rate limited, no more retries`)\n }\n\n const response: Response<T> = {\n // eslint-disable-next-line id-length\n ok: fetchResponse.ok,\n status: fetchResponse.status,\n statusText: fetchResponse.statusText,\n meta: {\n duration,\n },\n }\n\n const responseType = payload.responseType ?? type\n\n if (response.ok) {\n log(payload, 'debug', `request successful in ${Math.floor(duration)}ms`, {\n baseUrl: base,\n })\n sendMetrics(payload, 'success', {\n duration,\n statusCode: String(fetchResponse.status),\n })\n switch (responseType) {\n case 'json':\n try {\n response.body = await fetchResponse.json()\n } catch (_error) {\n log(\n payload,\n 'debug',\n `Failed to parse json body. Returning empty object.`,\n {\n baseUrl: base,\n },\n )\n response.body = {} as T\n try {\n const responseBodyText = await fetchResponse.text()\n log(payload, 'debug', `Response body text`, {\n baseUrl: base,\n responseBodyText,\n status: fetchResponse.status,\n })\n } catch (textError) {\n // this is fine\n log(payload, 'debug', `Failed to parse response body text.`, {\n baseUrl: base,\n status: fetchResponse.status,\n error: textError,\n })\n }\n }\n break\n case 'text':\n response.body = (await fetchResponse.text()) as T\n break\n default:\n response.body = (await fetchResponse.text()) as T\n }\n // store in cache after parsing\n if (\n payload.method === 'get' &&\n payload.config.frontendCaching?.enabled &&\n response.body !== undefined\n ) {\n try {\n await frontendCache.set('get', url, response.body as any)\n log(payload, 'debug', 'cache store successful')\n } catch (_cacheSetError) {\n // ignore cache set error\n }\n }\n } else {\n let statusText = fetchResponse.statusText\n try {\n statusText = await fetchResponse.text()\n } catch (_error) {\n // this is fine\n }\n response.statusText = statusText\n log(\n payload,\n 'debug',\n `request failed with status ${response.status}: ${statusText}`,\n {\n baseUrl: base,\n },\n )\n\n // Special Handling for dedicated target systems to not count special status codes as errors\n // eslint-disable-next-line no-shadow\n let type: RequestBaseCustomMetricsDetailsType = 'error'\n const noErrorStatusCodes: number[] = []\n switch (payload.metricsDetails.target.name) {\n case 'auth0':\n noErrorStatusCodes.push(...[400, 404, 409])\n break\n case 'accounts':\n case 'console':\n noErrorStatusCodes.push(...[404, 409])\n if (payload.metricsDetails.method.name === 'createTemporaryCluster') {\n // case: cannot create temporary cluster\n noErrorStatusCodes.push(...[400, 403, 412])\n }\n if (\n [\n 'ConsoleM2MService.verifyZeebeClient',\n 'ConsoleM2MService.verifyApiClient',\n ].includes(payload.metricsDetails.method.name)\n ) {\n // case: api/zeebe client credentials are invalid\n noErrorStatusCodes.push(...[401])\n }\n if (\n payload.metricsDetails.method.name ===\n 'OrgsService.createAndReturnSocialLoginUser'\n ) {\n noErrorStatusCodes.push(\n ...[\n // onboard user, user already has an org\n 400,\n // existing extSSO-connection\n 412,\n ],\n )\n }\n break\n }\n\n if (noErrorStatusCodes.includes(response.status)) {\n type = 'success'\n }\n\n sendMetrics(payload, type, {\n duration,\n statusCode: String(fetchResponse.status),\n error: statusText,\n })\n }\n if (serveCachedAndReturnAfterNetwork && response.ok) {\n // when we served stale via callback earlier, we now also return the fresh response\n log(payload, 'debug', 'stale cache updated, returning new data')\n }\n return response\n } catch (error: any) {\n log(payload, 'error', `request failed with no status`, {\n baseUrl: base,\n error,\n })\n const duration = performance.now() - start\n let errorMessage: string | undefined\n if (error?.cause?.code) {\n errorMessage = error?.cause?.code\n } else if (error?.message) {\n errorMessage = error?.message\n }\n sendMetrics(payload, 'error', {\n statusCode: 'fetch-error',\n duration,\n error: errorMessage,\n })\n const response: Response<T> = {\n // eslint-disable-next-line id-length\n ok: false,\n status: 500,\n statusText: 'fetch error',\n meta: {\n duration,\n },\n }\n return response\n }\n}\n"],
5
- "mappings": "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",
6
- "names": ["type"]
7
- }
@@ -1,7 +0,0 @@
1
- export declare class Cache<K, V> {
2
- private expirationInMilliseconds;
3
- private data;
4
- constructor(expirationInMilliseconds: number);
5
- set(key: K, value: V): void;
6
- get(key: K): V | undefined;
7
- }
@@ -1,25 +0,0 @@
1
- class Cache {
2
- constructor(expirationInMilliseconds) {
3
- this.expirationInMilliseconds = expirationInMilliseconds;
4
- this.data = /* @__PURE__ */ new Map();
5
- }
6
- set(key, value) {
7
- this.data.set(key, {
8
- value,
9
- expiresAt: Date.now() + this.expirationInMilliseconds
10
- });
11
- }
12
- get(key) {
13
- const cached = this.data.get(key);
14
- if (cached && cached.expiresAt > Date.now()) {
15
- return cached.value;
16
- } else if (cached) {
17
- this.data.delete(key);
18
- }
19
- return void 0;
20
- }
21
- }
22
- export {
23
- Cache
24
- };
25
- //# sourceMappingURL=cache.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/utils/cache.ts"],
4
- "sourcesContent": ["/*\n * Copyright Camunda Services GmbH and/or licensed to Camunda Services GmbH\n * under one or more contributor license agreements. Licensed under a commercial license.\n * You may not use this file except in compliance with the commercial license.\n */\n\nexport class Cache<K, V> {\n private data: Map<K, { value: V; expiresAt: number }> = new Map()\n\n constructor(private expirationInMilliseconds: number) {}\n\n public set(key: K, value: V) {\n this.data.set(key, {\n value,\n expiresAt: Date.now() + this.expirationInMilliseconds,\n })\n }\n public get(key: K): V | undefined {\n const cached = this.data.get(key)\n if (cached && cached.expiresAt > Date.now()) {\n return cached.value\n } else if (cached) {\n this.data.delete(key)\n }\n return undefined\n }\n}\n"],
5
- "mappings": "AAMO,MAAM,MAAY;AAAA,EAGvB,YAAoB,0BAAkC;AAAlC;AAFpB,SAAQ,OAAgD,oBAAI,IAAI;AAAA,EAET;AAAA,EAEhD,IAAI,KAAQ,OAAU;AAC3B,SAAK,KAAK,IAAI,KAAK;AAAA,MACjB;AAAA,MACA,WAAW,KAAK,IAAI,IAAI,KAAK;AAAA,IAC/B,CAAC;AAAA,EACH;AAAA,EACO,IAAI,KAAuB;AAChC,UAAM,SAAS,KAAK,KAAK,IAAI,GAAG;AAChC,QAAI,UAAU,OAAO,YAAY,KAAK,IAAI,GAAG;AAC3C,aAAO,OAAO;AAAA,IAChB,WAAW,QAAQ;AACjB,WAAK,KAAK,OAAO,GAAG;AAAA,IACtB;AACA,WAAO;AAAA,EACT;AACF;",
6
- "names": []
7
- }
@@ -1,18 +0,0 @@
1
- import type { RequestBaseServiceContext } from '../types/general.types.js';
2
- export declare namespace CustomMetricsCCMA {
3
- const PREFIX = "ccma_";
4
- const LABEL_NAMES: string[];
5
- function convertServiceContextToMetrics(context: RequestBaseServiceContext): {
6
- source: string;
7
- targetName: string;
8
- sourceToTarget: string;
9
- targetType: "internal" | "external";
10
- methodName: string;
11
- methodUrl: string;
12
- methodType: import("../types/general.types.js").RequestBaseMethodType;
13
- eventType: import("../types/general.types.js").RequestBaseCustomMetricsDetailsType | undefined;
14
- durationBucket: string | undefined;
15
- statusCode: string | undefined;
16
- error: string | undefined;
17
- };
18
- }
@@ -1,37 +0,0 @@
1
- var CustomMetricsCCMA;
2
- ((CustomMetricsCCMA2) => {
3
- CustomMetricsCCMA2.PREFIX = "ccma_";
4
- CustomMetricsCCMA2.LABEL_NAMES = [
5
- "source",
6
- "targetName",
7
- "sourceToTarget",
8
- "targetType",
9
- "methodName",
10
- "methodUrl",
11
- "methodType",
12
- "eventType",
13
- "durationBucket",
14
- "statusCode",
15
- "error"
16
- ];
17
- function convertServiceContextToMetrics(context) {
18
- return {
19
- source: context.source,
20
- targetName: context.target.name,
21
- sourceToTarget: `${context.source}-->${context.target.name}`,
22
- targetType: context.target.type,
23
- methodName: context.method.name,
24
- methodUrl: context.method.normalizedUrl,
25
- methodType: context.method.type,
26
- eventType: context.eventType,
27
- durationBucket: context.durationBucket,
28
- statusCode: context.statusCode,
29
- error: context.error
30
- };
31
- }
32
- CustomMetricsCCMA2.convertServiceContextToMetrics = convertServiceContextToMetrics;
33
- })(CustomMetricsCCMA || (CustomMetricsCCMA = {}));
34
- export {
35
- CustomMetricsCCMA
36
- };
37
- //# sourceMappingURL=ccma-metrics.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/utils/ccma-metrics.ts"],
4
- "sourcesContent": ["/*\n * Copyright Camunda Services GmbH and/or licensed to Camunda Services GmbH\n * under one or more contributor license agreements. Licensed under a commercial license.\n * You may not use this file except in compliance with the commercial license.\n */\n\nimport type { RequestBaseServiceContext } from '../types/general.types.js'\n\nexport namespace CustomMetricsCCMA {\n export const PREFIX = 'ccma_'\n\n export const LABEL_NAMES: string[] = [\n 'source',\n 'targetName',\n 'sourceToTarget',\n 'targetType',\n 'methodName',\n 'methodUrl',\n 'methodType',\n 'eventType',\n 'durationBucket',\n 'statusCode',\n 'error',\n ]\n\n export function convertServiceContextToMetrics(\n context: RequestBaseServiceContext,\n ) {\n return {\n source: context.source,\n targetName: context.target.name,\n sourceToTarget: `${context.source}-->${context.target.name}`,\n targetType: context.target.type,\n methodName: context.method.name,\n methodUrl: context.method.normalizedUrl,\n methodType: context.method.type,\n eventType: context.eventType,\n durationBucket: context.durationBucket,\n statusCode: context.statusCode,\n error: context.error,\n }\n }\n}\n"],
5
- "mappings": "AAQO,IAAU;AAAA,CAAV,CAAUA,uBAAV;AACE,EAAMA,mBAAA,SAAS;AAEf,EAAMA,mBAAA,cAAwB;AAAA,IACnC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAEO,WAAS,+BACd,SACA;AACA,WAAO;AAAA,MACL,QAAQ,QAAQ;AAAA,MAChB,YAAY,QAAQ,OAAO;AAAA,MAC3B,gBAAgB,GAAG,QAAQ,MAAM,MAAM,QAAQ,OAAO,IAAI;AAAA,MAC1D,YAAY,QAAQ,OAAO;AAAA,MAC3B,YAAY,QAAQ,OAAO;AAAA,MAC3B,WAAW,QAAQ,OAAO;AAAA,MAC1B,YAAY,QAAQ,OAAO;AAAA,MAC3B,WAAW,QAAQ;AAAA,MACnB,gBAAgB,QAAQ;AAAA,MACxB,YAAY,QAAQ;AAAA,MACpB,OAAO,QAAQ;AAAA,IACjB;AAAA,EACF;AAhBO,EAAAA,mBAAS;AAAA,GAjBD;",
6
- "names": ["CustomMetricsCCMA"]
7
- }
@@ -1,11 +0,0 @@
1
- import type { RequestBaseParamsConfig } from '../types/general.types.js';
2
- export type ServiceName = 'accounts' | 'console' | 'audit-logger' | 'notifications' | 'login' | 'login-internal' | 'comm-bridge' | 'telemetry' | 'mixpanel' | 'alert-distributor' | 'analytic-bridge' | 'wordpress-helpcenter';
3
- export type ServiceAudience = 'camunda-cloud-audience' | 'comm-bridge-audience' | 'notification-audience' | 'analytics-audience';
4
- export interface EnvironmentParam {
5
- id: ServiceName | ServiceAudience;
6
- dev: string;
7
- devAws: string;
8
- int: string;
9
- prod: string;
10
- }
11
- export declare function getEnvParam(id: ServiceName | ServiceAudience, config: RequestBaseParamsConfig): string;