@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
@@ -1,110 +0,0 @@
1
- import { request } from "../../utils/api.js";
2
- import { HttpError } from "../../utils/errors.js";
3
- class ConsoleValueMetricsService {
4
- static async getValueMetrics(params) {
5
- const serviceContext = {
6
- method: {
7
- name: `ConsoleValueMetricsService.getValueMetrics`,
8
- url: `api/orgs/${params.params.orgId}/clusters/usage/value-metrics`,
9
- normalizedUrl: `api/orgs/:orgId/clusters/usage/value-metrics`,
10
- type: "get"
11
- },
12
- source: params.config.metrics?.source || "unset",
13
- target: {
14
- name: "console",
15
- type: "internal"
16
- }
17
- };
18
- const response = await request({
19
- ...params,
20
- base: {
21
- id: "console"
22
- },
23
- url: serviceContext.method.url,
24
- method: serviceContext.method.type,
25
- metricsDetails: serviceContext
26
- });
27
- if (!response.ok) {
28
- throw new HttpError(
29
- `${serviceContext.method.name}: ${response.status} ${response.statusText}`,
30
- response.status,
31
- response.statusText
32
- );
33
- }
34
- return response.body;
35
- }
36
- static async getValueMetricsPerDays(params) {
37
- const serviceContext = {
38
- method: {
39
- name: `ConsoleValueMetricsService.getValueMetricsPerDays`,
40
- url: `api/orgs/${params.params.orgId}/clusters/usage/value-metrics/${params.params.days}`,
41
- normalizedUrl: `api/orgs/:orgId/clusters/usage/value-metrics/:days`,
42
- type: "get"
43
- },
44
- source: params.config.metrics?.source || "unset",
45
- target: {
46
- name: "console",
47
- type: "internal"
48
- }
49
- };
50
- const response = await request({
51
- ...params,
52
- base: {
53
- id: "console"
54
- },
55
- url: serviceContext.method.url,
56
- method: serviceContext.method.type,
57
- metricsDetails: serviceContext
58
- });
59
- if (!response.ok) {
60
- throw new HttpError(
61
- `${serviceContext.method.name}: ${response.status} ${response.statusText}`,
62
- response.status,
63
- response.statusText
64
- );
65
- }
66
- return response.body;
67
- }
68
- static async triggerUpdateValueMetricsPerCluster(params) {
69
- const serviceContext = {
70
- method: {
71
- name: `ConsoleValueMetricsService.triggerUpdateValueMetricsPerCluster`,
72
- url: `api/admin/metrics/clusters`,
73
- normalizedUrl: `api/admin/metrics/clusters`,
74
- type: "post"
75
- },
76
- source: params.config.metrics?.source || "unset",
77
- target: {
78
- name: "console",
79
- type: "internal"
80
- }
81
- };
82
- const response = await request({
83
- config: params.config,
84
- base: {
85
- id: "console"
86
- },
87
- url: serviceContext.method.url,
88
- method: serviceContext.method.type,
89
- headers: params.params.headers,
90
- type: "json",
91
- responseType: "none",
92
- body: {
93
- clusterUsageOrgStartDates: params.params.clusterUsageOrgStartDates,
94
- startDate: params.params.startDate
95
- },
96
- metricsDetails: serviceContext
97
- });
98
- if (!response.ok) {
99
- throw new HttpError(
100
- `${serviceContext.method.name}: ${response.status} ${response.statusText}`,
101
- response.status,
102
- response.statusText
103
- );
104
- }
105
- }
106
- }
107
- export {
108
- ConsoleValueMetricsService
109
- };
110
- //# sourceMappingURL=console.valuemetrics.service.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/services/console/console.valuemetrics.service.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 ClusterUsageMetricsData,\n ClusterUsageOrgStartDate,\n} from '@camunda/ccma-shared-types'\nimport type {\n RequestBaseParams,\n RequestBaseServiceContext,\n} from '../../types/general.types.js'\nimport { request } from '../../utils/api.js'\nimport { HttpError } from '../../utils/errors.js'\nimport type { GetValueMetricsPerDayParams } from '../accounts/accounts.valuemetrics.service.js'\n\nexport interface TriggerUpdateValueMetricsPerClusterRequest\n extends RequestBaseParams {\n params: {\n clusterUsageOrgStartDates: ClusterUsageOrgStartDate[]\n startDate?: number\n headers: {\n [key: string]: string\n }\n }\n}\n\nexport class ConsoleValueMetricsService {\n public static async getValueMetrics(\n params: GetValueMetricsPerDayParams,\n ): Promise<ClusterUsageMetricsData[]> {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: `ConsoleValueMetricsService.getValueMetrics`,\n url: `api/orgs/${params.params.orgId}/clusters/usage/value-metrics`,\n normalizedUrl: `api/orgs/:orgId/clusters/usage/value-metrics`,\n type: 'get',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'console',\n type: 'internal',\n },\n }\n const response = await request<ClusterUsageMetricsData[]>({\n ...params,\n base: {\n id: 'console',\n },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n })\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n return response.body!\n }\n\n public static async getValueMetricsPerDays(\n params: GetValueMetricsPerDayParams,\n ): Promise<ClusterUsageMetricsData[]> {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: `ConsoleValueMetricsService.getValueMetricsPerDays`,\n url: `api/orgs/${params.params.orgId}/clusters/usage/value-metrics/${params.params.days}`,\n normalizedUrl: `api/orgs/:orgId/clusters/usage/value-metrics/:days`,\n type: 'get',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'console',\n type: 'internal',\n },\n }\n const response = await request<ClusterUsageMetricsData[]>({\n ...params,\n base: {\n id: 'console',\n },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n })\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n return response.body!\n }\n\n public static async triggerUpdateValueMetricsPerCluster(\n params: TriggerUpdateValueMetricsPerClusterRequest,\n ): Promise<void> {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: `ConsoleValueMetricsService.triggerUpdateValueMetricsPerCluster`,\n url: `api/admin/metrics/clusters`,\n normalizedUrl: `api/admin/metrics/clusters`,\n type: 'post',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'console',\n type: 'internal',\n },\n }\n const response = await request<ClusterUsageMetricsData[]>({\n config: params.config,\n base: {\n id: 'console',\n },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n headers: params.params.headers,\n type: 'json',\n responseType: 'none',\n body: {\n clusterUsageOrgStartDates: params.params.clusterUsageOrgStartDates,\n startDate: params.params.startDate,\n },\n metricsDetails: serviceContext,\n })\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n }\n}\n"],
5
- "mappings": "AAcA,SAAS,eAAe;AACxB,SAAS,iBAAiB;AAcnB,MAAM,2BAA2B;AAAA,EACtC,aAAoB,gBAClB,QACoC;AACpC,UAAM,iBAA4C;AAAA,MAChD,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,KAAK,YAAY,OAAO,OAAO,KAAK;AAAA,QACpC,eAAe;AAAA,QACf,MAAM;AAAA,MACR;AAAA,MACA,QAAQ,OAAO,OAAO,SAAS,UAAU;AAAA,MACzC,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AACA,UAAM,WAAW,MAAM,QAAmC;AAAA,MACxD,GAAG;AAAA,MACH,MAAM;AAAA,QACJ,IAAI;AAAA,MACN;AAAA,MACA,KAAK,eAAe,OAAO;AAAA,MAC3B,QAAQ,eAAe,OAAO;AAAA,MAC9B,gBAAgB;AAAA,IAClB,CAAC;AACD,QAAI,CAAC,SAAS,IAAI;AAChB,YAAM,IAAI;AAAA,QACR,GAAG,eAAe,OAAO,IAAI,KAAK,SAAS,MAAM,IAAI,SAAS,UAAU;AAAA,QACxE,SAAS;AAAA,QACT,SAAS;AAAA,MACX;AAAA,IACF;AACA,WAAO,SAAS;AAAA,EAClB;AAAA,EAEA,aAAoB,uBAClB,QACoC;AACpC,UAAM,iBAA4C;AAAA,MAChD,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,KAAK,YAAY,OAAO,OAAO,KAAK,iCAAiC,OAAO,OAAO,IAAI;AAAA,QACvF,eAAe;AAAA,QACf,MAAM;AAAA,MACR;AAAA,MACA,QAAQ,OAAO,OAAO,SAAS,UAAU;AAAA,MACzC,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AACA,UAAM,WAAW,MAAM,QAAmC;AAAA,MACxD,GAAG;AAAA,MACH,MAAM;AAAA,QACJ,IAAI;AAAA,MACN;AAAA,MACA,KAAK,eAAe,OAAO;AAAA,MAC3B,QAAQ,eAAe,OAAO;AAAA,MAC9B,gBAAgB;AAAA,IAClB,CAAC;AACD,QAAI,CAAC,SAAS,IAAI;AAChB,YAAM,IAAI;AAAA,QACR,GAAG,eAAe,OAAO,IAAI,KAAK,SAAS,MAAM,IAAI,SAAS,UAAU;AAAA,QACxE,SAAS;AAAA,QACT,SAAS;AAAA,MACX;AAAA,IACF;AACA,WAAO,SAAS;AAAA,EAClB;AAAA,EAEA,aAAoB,oCAClB,QACe;AACf,UAAM,iBAA4C;AAAA,MAChD,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,KAAK;AAAA,QACL,eAAe;AAAA,QACf,MAAM;AAAA,MACR;AAAA,MACA,QAAQ,OAAO,OAAO,SAAS,UAAU;AAAA,MACzC,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AACA,UAAM,WAAW,MAAM,QAAmC;AAAA,MACxD,QAAQ,OAAO;AAAA,MACf,MAAM;AAAA,QACJ,IAAI;AAAA,MACN;AAAA,MACA,KAAK,eAAe,OAAO;AAAA,MAC3B,QAAQ,eAAe,OAAO;AAAA,MAC9B,SAAS,OAAO,OAAO;AAAA,MACvB,MAAM;AAAA,MACN,cAAc;AAAA,MACd,MAAM;AAAA,QACJ,2BAA2B,OAAO,OAAO;AAAA,QACzC,WAAW,OAAO,OAAO;AAAA,MAC3B;AAAA,MACA,gBAAgB;AAAA,IAClB,CAAC;AACD,QAAI,CAAC,SAAS,IAAI;AAChB,YAAM,IAAI;AAAA,QACR,GAAG,eAAe,OAAO,IAAI,KAAK,SAAS,MAAM,IAAI,SAAS,UAAU;AAAA,QACxE,SAAS;AAAA,QACT,SAAS;AAAA,MACX;AAAA,IACF;AAAA,EACF;AACF;",
6
- "names": []
7
- }
@@ -1,21 +0,0 @@
1
- import type { GenerationDto } from '@camunda/ccma-shared-types';
2
- import type { RequestBaseParams } from '../../types/general.types.js';
3
- export declare class GenerationService {
4
- static getGeneration(params: {
5
- uuid: string;
6
- } & RequestBaseParams): Promise<GenerationDto | undefined>;
7
- static setSupported(params: {
8
- generationUuid: string;
9
- unsupportedStartingAt: string | null;
10
- } & RequestBaseParams): Promise<void>;
11
- static createAutoUpdateBulkOperation(params: {
12
- generationUuid: string;
13
- name: string;
14
- reason: string;
15
- eyes: number;
16
- } & RequestBaseParams): Promise<{
17
- uuid: string;
18
- name: string;
19
- clusterCount: number;
20
- } | undefined>;
21
- }
@@ -1,106 +0,0 @@
1
- import { request } from "../../utils/api.js";
2
- import { HttpError } from "../../utils/errors.js";
3
- class GenerationService {
4
- static async getGeneration(params) {
5
- const serviceContext = {
6
- method: {
7
- name: `GenerationService.getGeneration`,
8
- url: `api/generations/${params.uuid}`,
9
- normalizedUrl: `api/generations/:generationUuid`,
10
- type: "get"
11
- },
12
- source: params.config.metrics?.source || "unset",
13
- target: { name: "console", type: "internal" }
14
- };
15
- const response = await request({
16
- config: params.config,
17
- base: {
18
- id: "console"
19
- },
20
- responseType: "json",
21
- url: serviceContext.method.url,
22
- method: serviceContext.method.type,
23
- metricsDetails: serviceContext
24
- });
25
- if (!response.ok) {
26
- throw new HttpError(
27
- `${serviceContext.method.name}: ${response.status} ${response.statusText}`,
28
- response.status,
29
- response.statusText
30
- );
31
- }
32
- return response.body;
33
- }
34
- static async setSupported(params) {
35
- const serviceContext = {
36
- method: {
37
- name: `GenerationService.setSupported`,
38
- url: `api/generations/${params.generationUuid}/supported`,
39
- normalizedUrl: `api/generations/:generationUuid/supported`,
40
- type: "patch"
41
- },
42
- source: params.config.metrics?.source || "unset",
43
- target: { name: "console", type: "internal" }
44
- };
45
- const response = await request({
46
- config: params.config,
47
- base: {
48
- id: "console"
49
- },
50
- body: {
51
- unsupportedStartingAt: params.unsupportedStartingAt
52
- },
53
- responseType: "none",
54
- url: serviceContext.method.url,
55
- method: serviceContext.method.type,
56
- metricsDetails: serviceContext
57
- });
58
- if (!response.ok) {
59
- throw new HttpError(
60
- `${serviceContext.method.name}: ${response.status} ${response.statusText}`,
61
- response.status,
62
- response.statusText
63
- );
64
- }
65
- }
66
- static async createAutoUpdateBulkOperation(params) {
67
- const body = {
68
- name: params.name,
69
- reason: params.reason,
70
- eyes: params.eyes
71
- };
72
- const serviceContext = {
73
- method: {
74
- name: `GenerationService.createAutoUpdateBulkOperation`,
75
- url: `external/generations/${params.generationUuid}/autoupdate`,
76
- normalizedUrl: `external/generations/:generationUuid/autoupdate`,
77
- type: "put"
78
- },
79
- source: params.config.metrics?.source || "unset",
80
- target: { name: "console", type: "internal" }
81
- };
82
- const response = await request({
83
- config: params.config,
84
- base: {
85
- id: "console"
86
- },
87
- body,
88
- responseType: "json",
89
- url: serviceContext.method.url,
90
- method: serviceContext.method.type,
91
- metricsDetails: serviceContext
92
- });
93
- if (!response.ok) {
94
- throw new HttpError(
95
- `${serviceContext.method.name}: ${response.status} ${response.statusText}`,
96
- response.status,
97
- response.statusText
98
- );
99
- }
100
- return response.body;
101
- }
102
- }
103
- export {
104
- GenerationService
105
- };
106
- //# sourceMappingURL=generation.service.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/services/console/generation.service.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 { GenerationDto } from '@camunda/ccma-shared-types'\nimport type {\n RequestBaseParams,\n RequestBaseServiceContext,\n} from '../../types/general.types.js'\nimport { request } from '../../utils/api.js'\nimport { HttpError } from '../../utils/errors.js'\n\nexport class GenerationService {\n public static async getGeneration(\n params: { uuid: string } & RequestBaseParams,\n ): Promise<GenerationDto | undefined> {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: `GenerationService.getGeneration`,\n url: `api/generations/${params.uuid}`,\n normalizedUrl: `api/generations/:generationUuid`,\n type: 'get',\n },\n source: params.config.metrics?.source || 'unset',\n target: { name: 'console', type: 'internal' },\n }\n const response = await request<GenerationDto>({\n config: params.config,\n base: {\n id: 'console',\n },\n responseType: 'json',\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n })\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n return response.body\n }\n\n public static async setSupported(\n params: {\n generationUuid: string\n unsupportedStartingAt: string | null\n } & RequestBaseParams,\n ) {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: `GenerationService.setSupported`,\n url: `api/generations/${params.generationUuid}/supported`,\n normalizedUrl: `api/generations/:generationUuid/supported`,\n type: 'patch',\n },\n source: params.config.metrics?.source || 'unset',\n target: { name: 'console', type: 'internal' },\n }\n const response = await request<any>({\n config: params.config,\n base: {\n id: 'console',\n },\n body: {\n unsupportedStartingAt: params.unsupportedStartingAt,\n },\n responseType: 'none',\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n })\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n }\n\n public static async createAutoUpdateBulkOperation(\n params: {\n generationUuid: string\n name: string\n reason: string\n eyes: number\n } & RequestBaseParams,\n ) {\n const body = {\n name: params.name,\n reason: params.reason,\n eyes: params.eyes,\n }\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: `GenerationService.createAutoUpdateBulkOperation`,\n url: `external/generations/${params.generationUuid}/autoupdate`,\n normalizedUrl: `external/generations/:generationUuid/autoupdate`,\n type: 'put',\n },\n source: params.config.metrics?.source || 'unset',\n target: { name: 'console', type: 'internal' },\n }\n const response = await request<{\n uuid: string\n name: string\n clusterCount: number\n }>({\n config: params.config,\n base: {\n id: 'console',\n },\n body,\n responseType: 'json',\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n })\n\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n return response.body\n }\n}\n"],
5
- "mappings": "AAWA,SAAS,eAAe;AACxB,SAAS,iBAAiB;AAEnB,MAAM,kBAAkB;AAAA,EAC7B,aAAoB,cAClB,QACoC;AACpC,UAAM,iBAA4C;AAAA,MAChD,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,KAAK,mBAAmB,OAAO,IAAI;AAAA,QACnC,eAAe;AAAA,QACf,MAAM;AAAA,MACR;AAAA,MACA,QAAQ,OAAO,OAAO,SAAS,UAAU;AAAA,MACzC,QAAQ,EAAE,MAAM,WAAW,MAAM,WAAW;AAAA,IAC9C;AACA,UAAM,WAAW,MAAM,QAAuB;AAAA,MAC5C,QAAQ,OAAO;AAAA,MACf,MAAM;AAAA,QACJ,IAAI;AAAA,MACN;AAAA,MACA,cAAc;AAAA,MACd,KAAK,eAAe,OAAO;AAAA,MAC3B,QAAQ,eAAe,OAAO;AAAA,MAC9B,gBAAgB;AAAA,IAClB,CAAC;AACD,QAAI,CAAC,SAAS,IAAI;AAChB,YAAM,IAAI;AAAA,QACR,GAAG,eAAe,OAAO,IAAI,KAAK,SAAS,MAAM,IAAI,SAAS,UAAU;AAAA,QACxE,SAAS;AAAA,QACT,SAAS;AAAA,MACX;AAAA,IACF;AACA,WAAO,SAAS;AAAA,EAClB;AAAA,EAEA,aAAoB,aAClB,QAIA;AACA,UAAM,iBAA4C;AAAA,MAChD,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,KAAK,mBAAmB,OAAO,cAAc;AAAA,QAC7C,eAAe;AAAA,QACf,MAAM;AAAA,MACR;AAAA,MACA,QAAQ,OAAO,OAAO,SAAS,UAAU;AAAA,MACzC,QAAQ,EAAE,MAAM,WAAW,MAAM,WAAW;AAAA,IAC9C;AACA,UAAM,WAAW,MAAM,QAAa;AAAA,MAClC,QAAQ,OAAO;AAAA,MACf,MAAM;AAAA,QACJ,IAAI;AAAA,MACN;AAAA,MACA,MAAM;AAAA,QACJ,uBAAuB,OAAO;AAAA,MAChC;AAAA,MACA,cAAc;AAAA,MACd,KAAK,eAAe,OAAO;AAAA,MAC3B,QAAQ,eAAe,OAAO;AAAA,MAC9B,gBAAgB;AAAA,IAClB,CAAC;AACD,QAAI,CAAC,SAAS,IAAI;AAChB,YAAM,IAAI;AAAA,QACR,GAAG,eAAe,OAAO,IAAI,KAAK,SAAS,MAAM,IAAI,SAAS,UAAU;AAAA,QACxE,SAAS;AAAA,QACT,SAAS;AAAA,MACX;AAAA,IACF;AAAA,EACF;AAAA,EAEA,aAAoB,8BAClB,QAMA;AACA,UAAM,OAAO;AAAA,MACX,MAAM,OAAO;AAAA,MACb,QAAQ,OAAO;AAAA,MACf,MAAM,OAAO;AAAA,IACf;AACA,UAAM,iBAA4C;AAAA,MAChD,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,KAAK,wBAAwB,OAAO,cAAc;AAAA,QAClD,eAAe;AAAA,QACf,MAAM;AAAA,MACR;AAAA,MACA,QAAQ,OAAO,OAAO,SAAS,UAAU;AAAA,MACzC,QAAQ,EAAE,MAAM,WAAW,MAAM,WAAW;AAAA,IAC9C;AACA,UAAM,WAAW,MAAM,QAIpB;AAAA,MACD,QAAQ,OAAO;AAAA,MACf,MAAM;AAAA,QACJ,IAAI;AAAA,MACN;AAAA,MACA;AAAA,MACA,cAAc;AAAA,MACd,KAAK,eAAe,OAAO;AAAA,MAC3B,QAAQ,eAAe,OAAO;AAAA,MAC9B,gBAAgB;AAAA,IAClB,CAAC;AAED,QAAI,CAAC,SAAS,IAAI;AAChB,YAAM,IAAI;AAAA,QACR,GAAG,eAAe,OAAO,IAAI,KAAK,SAAS,MAAM,IAAI,SAAS,UAAU;AAAA,QACxE,SAAS;AAAA,QACT,SAAS;AAAA,MACX;AAAA,IACF;AACA,WAAO,SAAS;AAAA,EAClB;AACF;",
6
- "names": []
7
- }
@@ -1,73 +0,0 @@
1
- import type { RequestBaseParams } from '../../types/general.types.js';
2
- export interface GithubListMajorMinorReleasesRequest extends RequestBaseParams {
3
- options: {
4
- owner: string;
5
- repo: string;
6
- apiToken: string;
7
- iterations?: number;
8
- onlyLatest?: boolean;
9
- includeAlphas?: boolean;
10
- onlyPrerelease?: boolean;
11
- replaceBugfixSuffix?: boolean;
12
- };
13
- }
14
- export interface GithubListReleasesRequest extends RequestBaseParams {
15
- options: {
16
- owner: string;
17
- repo: string;
18
- apiToken: string;
19
- pageSize?: number;
20
- currentPage?: number;
21
- };
22
- }
23
- export interface GithubGetNextBugfixReleaseVersionRequest extends RequestBaseParams {
24
- options: {
25
- owner: string;
26
- repo: string;
27
- apiToken: string;
28
- iterations?: number;
29
- onlyLatest?: boolean;
30
- majorMinor: string;
31
- };
32
- }
33
- export interface GithubRelease {
34
- url: string;
35
- tag_name: string;
36
- body: string;
37
- created_at: string;
38
- prerelease: boolean;
39
- }
40
- export interface GithubListDirectoryContentRequest extends RequestBaseParams {
41
- options: {
42
- owner: string;
43
- repo: string;
44
- apiToken: string;
45
- path: string;
46
- ref?: string;
47
- };
48
- }
49
- export interface GithubGetRawFileRequest extends RequestBaseParams {
50
- options: {
51
- owner: string;
52
- repo: string;
53
- apiToken: string;
54
- path: string;
55
- ref?: string;
56
- };
57
- }
58
- export interface GithubContentItem {
59
- name: string;
60
- path: string;
61
- sha: string;
62
- size: number;
63
- url: string;
64
- download_url: string | undefined;
65
- type: string;
66
- }
67
- export declare class GithubService {
68
- static getNextBugfixReleaseVersion(params: GithubGetNextBugfixReleaseVersionRequest): Promise<string>;
69
- static listMajorMinorReleases(params: GithubListMajorMinorReleasesRequest): Promise<GithubRelease[]>;
70
- static getReleases(params: GithubListReleasesRequest): Promise<GithubRelease[]>;
71
- static listDirectoryContent(params: GithubListDirectoryContentRequest): Promise<GithubContentItem[]>;
72
- static getRawFile(params: GithubGetRawFileRequest): Promise<string>;
73
- }
@@ -1,272 +0,0 @@
1
- import { HOUR } from "@camunda/ccma-shared-types";
2
- import { request } from "../../utils/api.js";
3
- import { Cache } from "../../utils/cache.js";
4
- import { HttpError } from "../../utils/errors.js";
5
- const releaseCache = new Cache(HOUR);
6
- class GithubService {
7
- static async getNextBugfixReleaseVersion(params) {
8
- const releases = await GithubService.listMajorMinorReleases({
9
- config: params.config,
10
- options: {
11
- owner: params.options.owner,
12
- repo: params.options.repo,
13
- apiToken: params.options.apiToken,
14
- onlyLatest: true,
15
- iterations: params.options.iterations
16
- }
17
- });
18
- if (releases.length === 0) {
19
- throw new Error(
20
- `No releases found for ${params.options.owner}/${params.options.repo}`
21
- );
22
- }
23
- const latestRelease = releases[0];
24
- if (latestRelease.tag_name.startsWith(params.options.majorMinor)) {
25
- throw new Error(
26
- `Not allowed to create a new bugfix release for ${latestRelease.tag_name}`
27
- );
28
- }
29
- for (const release of releases) {
30
- if (release.tag_name.startsWith(params.options.majorMinor)) {
31
- const versionSplitted = release.tag_name.split(".");
32
- if (versionSplitted.length !== 3) {
33
- throw new Error(`Invalid version format: ${release.tag_name}`);
34
- }
35
- const majorVersion = Number(versionSplitted[0]);
36
- const minorVersion = Number(versionSplitted[1]);
37
- const patchVersion = Number(versionSplitted[2]) + 1;
38
- return `${majorVersion}.${minorVersion}.${patchVersion}`;
39
- }
40
- }
41
- throw new Error(`No bugfix release found for ${params.options.majorMinor}`);
42
- }
43
- static async listMajorMinorReleases(params) {
44
- const cacheKey = `major-minor-${params.options.owner}-${params.options.repo}-${params.options.onlyLatest ?? false}-${params.options.includeAlphas ?? false}-${params.options.onlyPrerelease ?? false}`;
45
- if (!params.cacheControl?.ignoreCache) {
46
- const cached = releaseCache.get(cacheKey);
47
- if (cached) {
48
- return cached;
49
- }
50
- }
51
- const pageSize = 100;
52
- const ITERATIONS = params.options.iterations || 15;
53
- const pagePromises = Array.from({ length: ITERATIONS }, (_, index) => {
54
- const currentPage = index + 1;
55
- return GithubService.getReleases({
56
- config: params.config,
57
- options: {
58
- owner: params.options.owner,
59
- repo: params.options.repo,
60
- apiToken: params.options.apiToken,
61
- pageSize,
62
- currentPage
63
- }
64
- });
65
- });
66
- const allPageResults = await Promise.all(pagePromises);
67
- const stableReleases = [];
68
- for (const releases of allPageResults) {
69
- if (params.options.replaceBugfixSuffix === true) {
70
- releases.forEach((release) => {
71
- if (release.tag_name.endsWith("_bugfix")) {
72
- release.tag_name = release.tag_name.replace(/_bugfix.*/u, "");
73
- }
74
- });
75
- }
76
- const filtered = releases.filter((release) => {
77
- let includeRelease = !release.prerelease;
78
- if (params.options.onlyPrerelease) {
79
- includeRelease = release.prerelease;
80
- }
81
- if (includeRelease && params.options.includeAlphas) {
82
- includeRelease = release.tag_name.includes("-alpha") && !release.tag_name.includes("-alphatest");
83
- }
84
- return includeRelease;
85
- });
86
- stableReleases.push(...filtered);
87
- }
88
- let releasesToRespond = [];
89
- stableReleases.sort((a, b) => {
90
- return new Date(b.created_at).getTime() - new Date(a.created_at).getTime();
91
- });
92
- if (params.options.onlyLatest) {
93
- const onlyLatest = {};
94
- for (const release of stableReleases) {
95
- const splitted = release.tag_name.split(".");
96
- const majorMinor = `${splitted[0]}.${splitted[1]}`;
97
- const patchVersion = Number(splitted[2]);
98
- if (!onlyLatest[majorMinor]) {
99
- onlyLatest[majorMinor] = patchVersion;
100
- } else if (patchVersion > onlyLatest[majorMinor]) {
101
- onlyLatest[majorMinor] = patchVersion;
102
- }
103
- }
104
- const releaseStrings = Object.keys(onlyLatest).map((key) => {
105
- return `${key}.${onlyLatest[key]}`;
106
- });
107
- const foundReleases = stableReleases.filter((release) => {
108
- return releaseStrings.includes(release.tag_name);
109
- });
110
- releasesToRespond = foundReleases;
111
- } else {
112
- releasesToRespond = stableReleases;
113
- }
114
- releaseCache.set(cacheKey, releasesToRespond);
115
- return releasesToRespond;
116
- }
117
- static async getReleases(params) {
118
- const pageSize = params.options.pageSize || 100;
119
- const currentPage = params.options.currentPage || 1;
120
- const queryParams = new URLSearchParams();
121
- queryParams.append("per_page", pageSize.toString());
122
- queryParams.append("page", currentPage.toString());
123
- const serviceContext = {
124
- method: {
125
- name: `GithubService.getReleases`,
126
- url: `https://api.github.com/repos/${params.options.owner}/${params.options.repo}/releases?${queryParams.toString()}`,
127
- normalizedUrl: `https://api.github.com/repos/:owner/:repo`,
128
- type: "get"
129
- },
130
- source: params.config.metrics?.source || "unset",
131
- target: {
132
- name: "github",
133
- type: "external"
134
- }
135
- };
136
- const response = await request({
137
- config: params.config,
138
- url: serviceContext.method.url,
139
- method: serviceContext.method.type,
140
- metricsDetails: serviceContext,
141
- type: "json",
142
- headers: {
143
- Accept: "application/vnd.github+json",
144
- Authorization: `Bearer ${params.options.apiToken}`
145
- }
146
- });
147
- if (!response.ok) {
148
- throw new HttpError(
149
- `${serviceContext.method.name}: ${response.status} ${response.statusText}`,
150
- response.status,
151
- response.statusText
152
- );
153
- }
154
- let releases = [];
155
- if (response.body) {
156
- releases = response.body.map((release) => {
157
- return {
158
- url: release.url,
159
- tag_name: release.tag_name,
160
- body: release.body,
161
- created_at: release.created_at,
162
- prerelease: release.prerelease
163
- };
164
- });
165
- }
166
- return releases;
167
- }
168
- static async listDirectoryContent(params) {
169
- const queryParams = new URLSearchParams();
170
- if (params.options.ref) {
171
- queryParams.append("ref", params.options.ref);
172
- }
173
- const encodedPath = encodeURIComponent(params.options.path).replace(
174
- /%2F/gu,
175
- "/"
176
- );
177
- const serviceContext = {
178
- method: {
179
- name: `GithubService.listDirectoryContent`,
180
- url: `https://api.github.com/repos/${params.options.owner}/${params.options.repo}/contents/${encodedPath}${queryParams.size ? `?${queryParams.toString()}` : ""}`,
181
- normalizedUrl: `https://api.github.com/repos/:owner/:repo/contents/:path`,
182
- type: "get"
183
- },
184
- source: params.config.metrics?.source || "unset",
185
- target: {
186
- name: "github",
187
- type: "external"
188
- }
189
- };
190
- const response = await request({
191
- config: params.config,
192
- url: serviceContext.method.url,
193
- method: serviceContext.method.type,
194
- metricsDetails: serviceContext,
195
- type: "json",
196
- headers: {
197
- Accept: "application/vnd.github+json",
198
- Authorization: `Bearer ${params.options.apiToken}`
199
- }
200
- });
201
- if (!response.ok) {
202
- throw new HttpError(
203
- `${serviceContext.method.name}: ${response.status} ${response.statusText}`,
204
- response.status,
205
- response.statusText
206
- );
207
- }
208
- let items = [];
209
- if (Array.isArray(response.body)) {
210
- items = response.body.map((item) => {
211
- return {
212
- name: item.name,
213
- path: item.path,
214
- sha: item.sha,
215
- size: item.size,
216
- url: item.url,
217
- download_url: item.download_url,
218
- type: item.type
219
- };
220
- });
221
- }
222
- return items;
223
- }
224
- static async getRawFile(params) {
225
- const queryParams = new URLSearchParams();
226
- if (params.options.ref) {
227
- queryParams.append("ref", params.options.ref);
228
- }
229
- const encodedPath = encodeURIComponent(params.options.path).replace(
230
- /%2F/gu,
231
- "/"
232
- );
233
- const serviceContext = {
234
- method: {
235
- name: `GithubService.getRawFile`,
236
- url: `https://api.github.com/repos/${params.options.owner}/${params.options.repo}/contents/${encodedPath}${queryParams.size ? `?${queryParams.toString()}` : ""}`,
237
- normalizedUrl: `https://api.github.com/repos/:owner/:repo/contents/:path`,
238
- type: "get"
239
- },
240
- source: params.config.metrics?.source || "unset",
241
- target: {
242
- name: "github",
243
- type: "external"
244
- }
245
- };
246
- const response = await request({
247
- config: params.config,
248
- url: serviceContext.method.url,
249
- method: serviceContext.method.type,
250
- metricsDetails: serviceContext,
251
- // do not set a Content-Type for GET, but expect text back
252
- type: "none",
253
- responseType: "text",
254
- headers: {
255
- Accept: "application/vnd.github.raw",
256
- Authorization: `Bearer ${params.options.apiToken}`
257
- }
258
- });
259
- if (!response.ok) {
260
- throw new HttpError(
261
- `${serviceContext.method.name}: ${response.status} ${response.statusText}`,
262
- response.status,
263
- response.statusText
264
- );
265
- }
266
- return response.body ?? "";
267
- }
268
- }
269
- export {
270
- GithubService
271
- };
272
- //# sourceMappingURL=github.service.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/services/github/github.service.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 { HOUR } from '@camunda/ccma-shared-types'\nimport type {\n RequestBaseParams,\n RequestBaseServiceContext,\n} from '../../types/general.types.js'\nimport { request } from '../../utils/api.js'\nimport { Cache } from '../../utils/cache.js'\nimport { HttpError } from '../../utils/errors.js'\n\nconst releaseCache = new Cache<string, GithubRelease[]>(HOUR)\n\nexport interface GithubListMajorMinorReleasesRequest extends RequestBaseParams {\n options: {\n owner: string\n repo: string\n apiToken: string\n iterations?: number\n onlyLatest?: boolean\n includeAlphas?: boolean\n onlyPrerelease?: boolean\n replaceBugfixSuffix?: boolean\n }\n}\n\nexport interface GithubListReleasesRequest extends RequestBaseParams {\n options: {\n owner: string\n repo: string\n apiToken: string\n pageSize?: number\n currentPage?: number\n }\n}\n\nexport interface GithubGetNextBugfixReleaseVersionRequest\n extends RequestBaseParams {\n options: {\n owner: string\n repo: string\n apiToken: string\n iterations?: number\n onlyLatest?: boolean\n majorMinor: string\n }\n}\n\nexport interface GithubRelease {\n url: string\n tag_name: string\n body: string\n created_at: string\n prerelease: boolean\n}\n\nexport interface GithubListDirectoryContentRequest extends RequestBaseParams {\n options: {\n owner: string\n repo: string\n apiToken: string\n path: string\n ref?: string\n }\n}\n\nexport interface GithubGetRawFileRequest extends RequestBaseParams {\n options: {\n owner: string\n repo: string\n apiToken: string\n path: string\n ref?: string\n }\n}\n\nexport interface GithubContentItem {\n name: string\n path: string\n sha: string\n size: number\n url: string\n download_url: string | undefined\n type: string\n}\n\nexport class GithubService {\n public static async getNextBugfixReleaseVersion(\n params: GithubGetNextBugfixReleaseVersionRequest,\n ): Promise<string> {\n const releases = await GithubService.listMajorMinorReleases({\n config: params.config,\n options: {\n owner: params.options.owner,\n repo: params.options.repo,\n apiToken: params.options.apiToken,\n onlyLatest: true,\n iterations: params.options.iterations,\n },\n })\n if (releases.length === 0) {\n throw new Error(\n `No releases found for ${params.options.owner}/${params.options.repo}`,\n )\n }\n const latestRelease = releases[0]\n if (latestRelease.tag_name.startsWith(params.options.majorMinor)) {\n throw new Error(\n `Not allowed to create a new bugfix release for ${latestRelease.tag_name}`,\n )\n }\n for (const release of releases) {\n if (release.tag_name.startsWith(params.options.majorMinor)) {\n const versionSplitted = release.tag_name.split('.')\n if (versionSplitted.length !== 3) {\n throw new Error(`Invalid version format: ${release.tag_name}`)\n }\n const majorVersion = Number(versionSplitted[0])\n const minorVersion = Number(versionSplitted[1])\n const patchVersion = Number(versionSplitted[2]) + 1\n return `${majorVersion}.${minorVersion}.${patchVersion}`\n }\n }\n throw new Error(`No bugfix release found for ${params.options.majorMinor}`)\n }\n\n public static async listMajorMinorReleases(\n params: GithubListMajorMinorReleasesRequest,\n ): Promise<GithubRelease[]> {\n const cacheKey = `major-minor-${params.options.owner}-${\n params.options.repo\n }-${params.options.onlyLatest ?? false}-${\n params.options.includeAlphas ?? false\n }-${params.options.onlyPrerelease ?? false}`\n if (!params.cacheControl?.ignoreCache) {\n const cached = releaseCache.get(cacheKey)\n if (cached) {\n return cached\n }\n }\n const pageSize = 100\n const ITERATIONS = params.options.iterations || 15\n\n // Fetch all pages in parallel for improved performance\n const pagePromises = Array.from({ length: ITERATIONS }, (_, index) => {\n const currentPage = index + 1\n return GithubService.getReleases({\n config: params.config,\n options: {\n owner: params.options.owner,\n repo: params.options.repo,\n apiToken: params.options.apiToken,\n pageSize,\n currentPage,\n },\n })\n })\n\n const allPageResults = await Promise.all(pagePromises)\n\n const stableReleases: GithubRelease[] = []\n for (const releases of allPageResults) {\n // replace bugfix suffix\n if (params.options.replaceBugfixSuffix === true) {\n releases.forEach((release) => {\n if (release.tag_name.endsWith('_bugfix')) {\n release.tag_name = release.tag_name.replace(/_bugfix.*/u, '')\n }\n })\n }\n\n const filtered = releases.filter((release) => {\n let includeRelease = !release.prerelease\n if (params.options.onlyPrerelease) {\n includeRelease = release.prerelease\n }\n if (includeRelease && params.options.includeAlphas) {\n includeRelease =\n release.tag_name.includes('-alpha') &&\n !release.tag_name.includes('-alphatest')\n }\n return includeRelease\n })\n stableReleases.push(...filtered)\n }\n\n let releasesToRespond: GithubRelease[] = []\n\n stableReleases.sort((a, b) => {\n return new Date(b.created_at).getTime() - new Date(a.created_at).getTime()\n })\n\n if (params.options.onlyLatest) {\n const onlyLatest: Record<string, number> = {}\n for (const release of stableReleases) {\n const splitted = release.tag_name.split('.')\n const majorMinor = `${splitted[0]}.${splitted[1]}`\n const patchVersion = Number(splitted[2])\n if (!onlyLatest[majorMinor]) {\n onlyLatest[majorMinor] = patchVersion\n } else if (patchVersion > onlyLatest[majorMinor]) {\n onlyLatest[majorMinor] = patchVersion\n }\n }\n const releaseStrings = Object.keys(onlyLatest).map((key) => {\n return `${key}.${onlyLatest[key]}`\n })\n const foundReleases = stableReleases.filter((release) => {\n return releaseStrings.includes(release.tag_name)\n })\n releasesToRespond = foundReleases\n } else {\n releasesToRespond = stableReleases\n }\n releaseCache.set(cacheKey, releasesToRespond)\n return releasesToRespond\n }\n\n public static async getReleases(\n params: GithubListReleasesRequest,\n ): Promise<GithubRelease[]> {\n const pageSize = params.options.pageSize || 100\n const currentPage = params.options.currentPage || 1\n const queryParams = new URLSearchParams()\n queryParams.append('per_page', pageSize.toString())\n queryParams.append('page', currentPage.toString())\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: `GithubService.getReleases`,\n url: `https://api.github.com/repos/${params.options.owner}/${\n params.options.repo\n }/releases?${queryParams.toString()}`,\n normalizedUrl: `https://api.github.com/repos/:owner/:repo`,\n type: 'get',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'github',\n type: 'external',\n },\n }\n\n const response = await request<GithubRelease[]>({\n config: params.config,\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n type: 'json',\n headers: {\n Accept: 'application/vnd.github+json',\n Authorization: `Bearer ${params.options.apiToken}`,\n },\n })\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n\n let releases: GithubRelease[] = []\n if (response.body) {\n releases = response.body.map((release) => {\n return {\n url: release.url,\n tag_name: release.tag_name,\n body: release.body,\n created_at: release.created_at,\n prerelease: release.prerelease,\n }\n })\n }\n return releases\n }\n\n public static async listDirectoryContent(\n params: GithubListDirectoryContentRequest,\n ): Promise<GithubContentItem[]> {\n const queryParams = new URLSearchParams()\n if (params.options.ref) {\n queryParams.append('ref', params.options.ref)\n }\n const encodedPath = encodeURIComponent(params.options.path).replace(\n /%2F/gu,\n '/',\n )\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: `GithubService.listDirectoryContent`,\n url: `https://api.github.com/repos/${params.options.owner}/${\n params.options.repo\n }/contents/${encodedPath}${queryParams.size ? `?${queryParams.toString()}` : ''}`,\n normalizedUrl: `https://api.github.com/repos/:owner/:repo/contents/:path`,\n type: 'get',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'github',\n type: 'external',\n },\n }\n\n const response = await request<any[]>({\n config: params.config,\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n type: 'json',\n headers: {\n Accept: 'application/vnd.github+json',\n Authorization: `Bearer ${params.options.apiToken}`,\n },\n })\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n\n let items: GithubContentItem[] = []\n if (Array.isArray(response.body)) {\n items = response.body.map((item: any) => {\n return {\n name: item.name,\n path: item.path,\n sha: item.sha,\n size: item.size,\n url: item.url,\n download_url: item.download_url,\n type: item.type,\n } as GithubContentItem\n })\n }\n return items\n }\n\n public static async getRawFile(\n params: GithubGetRawFileRequest,\n ): Promise<string> {\n const queryParams = new URLSearchParams()\n if (params.options.ref) {\n queryParams.append('ref', params.options.ref)\n }\n const encodedPath = encodeURIComponent(params.options.path).replace(\n /%2F/gu,\n '/',\n )\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: `GithubService.getRawFile`,\n url: `https://api.github.com/repos/${params.options.owner}/${\n params.options.repo\n }/contents/${encodedPath}${queryParams.size ? `?${queryParams.toString()}` : ''}`,\n normalizedUrl: `https://api.github.com/repos/:owner/:repo/contents/:path`,\n type: 'get',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'github',\n type: 'external',\n },\n }\n\n const response = await request<string>({\n config: params.config,\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n // do not set a Content-Type for GET, but expect text back\n type: 'none',\n responseType: 'text',\n headers: {\n Accept: 'application/vnd.github.raw',\n Authorization: `Bearer ${params.options.apiToken}`,\n },\n })\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n return response.body ?? ''\n }\n}\n"],
5
- "mappings": "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",
6
- "names": []
7
- }