@camunda/ccma-api 0.0.1
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.
- package/dist/index.d.ts +97 -0
- package/dist/index.js +153 -0
- package/dist/index.js.map +7 -0
- package/dist/services/accounts/accounts.data-export.service.d.ts +13 -0
- package/dist/services/accounts/accounts.data-export.service.js +41 -0
- package/dist/services/accounts/accounts.data-export.service.js.map +7 -0
- package/dist/services/accounts/accounts.valuemetrics.service.d.ts +8 -0
- package/dist/services/accounts/accounts.valuemetrics.service.js +1 -0
- package/dist/services/accounts/accounts.valuemetrics.service.js.map +7 -0
- package/dist/services/accounts/bot.service.d.ts +21 -0
- package/dist/services/accounts/bot.service.js +74 -0
- package/dist/services/accounts/bot.service.js.map +7 -0
- package/dist/services/accounts/challenge.service.d.ts +296 -0
- package/dist/services/accounts/challenge.service.js +475 -0
- package/dist/services/accounts/challenge.service.js.map +7 -0
- package/dist/services/accounts/connections.service.d.ts +27 -0
- package/dist/services/accounts/connections.service.js +41 -0
- package/dist/services/accounts/connections.service.js.map +7 -0
- package/dist/services/accounts/dashboards.service.d.ts +8 -0
- package/dist/services/accounts/dashboards.service.js +42 -0
- package/dist/services/accounts/dashboards.service.js.map +7 -0
- package/dist/services/accounts/early-access-features.service.d.ts +34 -0
- package/dist/services/accounts/early-access-features.service.js +67 -0
- package/dist/services/accounts/early-access-features.service.js.map +7 -0
- package/dist/services/accounts/genericCache.service.d.ts +13 -0
- package/dist/services/accounts/genericCache.service.js +80 -0
- package/dist/services/accounts/genericCache.service.js.map +7 -0
- package/dist/services/accounts/hdp.service.d.ts +52 -0
- package/dist/services/accounts/hdp.service.js +180 -0
- package/dist/services/accounts/hdp.service.js.map +7 -0
- package/dist/services/accounts/offboarding.service.d.ts +18 -0
- package/dist/services/accounts/offboarding.service.js +48 -0
- package/dist/services/accounts/offboarding.service.js.map +7 -0
- package/dist/services/accounts/organization-members.service.d.ts +68 -0
- package/dist/services/accounts/organization-members.service.js +216 -0
- package/dist/services/accounts/organization-members.service.js.map +7 -0
- package/dist/services/accounts/orgs.service.d.ts +273 -0
- package/dist/services/accounts/orgs.service.js +978 -0
- package/dist/services/accounts/orgs.service.js.map +7 -0
- package/dist/services/accounts/salesplan.service.d.ts +7 -0
- package/dist/services/accounts/salesplan.service.js +40 -0
- package/dist/services/accounts/salesplan.service.js.map +7 -0
- package/dist/services/accounts/spam-detection.service.d.ts +8 -0
- package/dist/services/accounts/spam-detection.service.js +72 -0
- package/dist/services/accounts/spam-detection.service.js.map +7 -0
- package/dist/services/accounts/stats.service.d.ts +7 -0
- package/dist/services/accounts/stats.service.js +40 -0
- package/dist/services/accounts/stats.service.js.map +7 -0
- package/dist/services/accounts/teams.service.d.ts +85 -0
- package/dist/services/accounts/teams.service.js +516 -0
- package/dist/services/accounts/teams.service.js.map +7 -0
- package/dist/services/accounts/usage-alerts.service.d.ts +34 -0
- package/dist/services/accounts/usage-alerts.service.js +112 -0
- package/dist/services/accounts/usage-alerts.service.js.map +7 -0
- package/dist/services/accounts/users.service.d.ts +101 -0
- package/dist/services/accounts/users.service.js +444 -0
- package/dist/services/accounts/users.service.js.map +7 -0
- package/dist/services/alerts/alerts.service.d.ts +59 -0
- package/dist/services/alerts/alerts.service.js +234 -0
- package/dist/services/alerts/alerts.service.js.map +7 -0
- package/dist/services/analytic-bridge/analytic-bridge.service.d.ts +23 -0
- package/dist/services/analytic-bridge/analytic-bridge.service.js +86 -0
- package/dist/services/analytic-bridge/analytic-bridge.service.js.map +7 -0
- package/dist/services/audit-logger/audit-logger.service.d.ts +27 -0
- package/dist/services/audit-logger/audit-logger.service.js +108 -0
- package/dist/services/audit-logger/audit-logger.service.js.map +7 -0
- package/dist/services/auth0/auth0.service.d.ts +15 -0
- package/dist/services/auth0/auth0.service.js +40 -0
- package/dist/services/auth0/auth0.service.js.map +7 -0
- package/dist/services/comm-bridge/comm-bridge.service.d.ts +33 -0
- package/dist/services/comm-bridge/comm-bridge.service.js +40 -0
- package/dist/services/comm-bridge/comm-bridge.service.js.map +7 -0
- package/dist/services/console/console.admin.service.d.ts +328 -0
- package/dist/services/console/console.admin.service.js +1526 -0
- package/dist/services/console/console.admin.service.js.map +7 -0
- package/dist/services/console/console.alerts.service.d.ts +69 -0
- package/dist/services/console/console.alerts.service.js +160 -0
- package/dist/services/console/console.alerts.service.js.map +7 -0
- package/dist/services/console/console.api-clients.service.d.ts +48 -0
- package/dist/services/console/console.api-clients.service.js +123 -0
- package/dist/services/console/console.api-clients.service.js.map +7 -0
- package/dist/services/console/console.backup-schedule.service.d.ts +21 -0
- package/dist/services/console/console.backup-schedule.service.js +67 -0
- package/dist/services/console/console.backup-schedule.service.js.map +7 -0
- package/dist/services/console/console.byok-scripts.service.d.ts +12 -0
- package/dist/services/console/console.byok-scripts.service.js +92 -0
- package/dist/services/console/console.byok-scripts.service.js.map +7 -0
- package/dist/services/console/console.byom-monitoring.service.d.ts +58 -0
- package/dist/services/console/console.byom-monitoring.service.js +177 -0
- package/dist/services/console/console.byom-monitoring.service.js.map +7 -0
- package/dist/services/console/console.cluster-clients.service.d.ts +55 -0
- package/dist/services/console/console.cluster-clients.service.js +123 -0
- package/dist/services/console/console.cluster-clients.service.js.map +7 -0
- package/dist/services/console/console.cluster-parameters.service.d.ts +64 -0
- package/dist/services/console/console.cluster-parameters.service.js +39 -0
- package/dist/services/console/console.cluster-parameters.service.js.map +7 -0
- package/dist/services/console/console.cluster.service.d.ts +114 -0
- package/dist/services/console/console.cluster.service.js +271 -0
- package/dist/services/console/console.cluster.service.js.map +7 -0
- package/dist/services/console/console.clusterBulkOperation.service.d.ts +20 -0
- package/dist/services/console/console.clusterBulkOperation.service.js +199 -0
- package/dist/services/console/console.clusterBulkOperation.service.js.map +7 -0
- package/dist/services/console/console.clusterplan.modification.service.d.ts +33 -0
- package/dist/services/console/console.clusterplan.modification.service.js +231 -0
- package/dist/services/console/console.clusterplan.modification.service.js.map +7 -0
- package/dist/services/console/console.clusterplan.service.d.ts +21 -0
- package/dist/services/console/console.clusterplan.service.js +64 -0
- package/dist/services/console/console.clusterplan.service.js.map +7 -0
- package/dist/services/console/console.connector-secrets.service.d.ts +30 -0
- package/dist/services/console/console.connector-secrets.service.js +125 -0
- package/dist/services/console/console.connector-secrets.service.js.map +7 -0
- package/dist/services/console/console.custommetrics.service.d.ts +10 -0
- package/dist/services/console/console.custommetrics.service.js +43 -0
- package/dist/services/console/console.custommetrics.service.js.map +7 -0
- package/dist/services/console/console.hotbackups.service.d.ts +34 -0
- package/dist/services/console/console.hotbackups.service.js +120 -0
- package/dist/services/console/console.hotbackups.service.js.map +7 -0
- package/dist/services/console/console.ip-whitelist.service.d.ts +15 -0
- package/dist/services/console/console.ip-whitelist.service.js +36 -0
- package/dist/services/console/console.ip-whitelist.service.js.map +7 -0
- package/dist/services/console/console.jobs.saas.service.d.ts +70 -0
- package/dist/services/console/console.jobs.saas.service.js +139 -0
- package/dist/services/console/console.jobs.saas.service.js.map +7 -0
- package/dist/services/console/console.jobs.sm.service.d.ts +57 -0
- package/dist/services/console/console.jobs.sm.service.js +208 -0
- package/dist/services/console/console.jobs.sm.service.js.map +7 -0
- package/dist/services/console/console.m2m.service.d.ts +23 -0
- package/dist/services/console/console.m2m.service.js +94 -0
- package/dist/services/console/console.m2m.service.js.map +7 -0
- package/dist/services/console/console.secure-connectivity.service.d.ts +41 -0
- package/dist/services/console/console.secure-connectivity.service.js +129 -0
- package/dist/services/console/console.secure-connectivity.service.js.map +7 -0
- package/dist/services/console/console.valuemetrics.service.d.ts +17 -0
- package/dist/services/console/console.valuemetrics.service.js +110 -0
- package/dist/services/console/console.valuemetrics.service.js.map +7 -0
- package/dist/services/console/generation.service.d.ts +21 -0
- package/dist/services/console/generation.service.js +106 -0
- package/dist/services/console/generation.service.js.map +7 -0
- package/dist/services/github/github.service.d.ts +73 -0
- package/dist/services/github/github.service.js +272 -0
- package/dist/services/github/github.service.js.map +7 -0
- package/dist/services/hibob/hibob.service.d.ts +74 -0
- package/dist/services/hibob/hibob.service.js +125 -0
- package/dist/services/hibob/hibob.service.js.map +7 -0
- package/dist/services/hubspot/hubspot.service.d.ts +50 -0
- package/dist/services/hubspot/hubspot.service.js +119 -0
- package/dist/services/hubspot/hubspot.service.js.map +7 -0
- package/dist/services/litellm/litellm.service.d.ts +290 -0
- package/dist/services/litellm/litellm.service.js +392 -0
- package/dist/services/litellm/litellm.service.js.map +7 -0
- package/dist/services/login/login.service.d.ts +15 -0
- package/dist/services/login/login.service.js +66 -0
- package/dist/services/login/login.service.js.map +7 -0
- package/dist/services/mixpanel/mixpanel.service.d.ts +16 -0
- package/dist/services/mixpanel/mixpanel.service.js +86 -0
- package/dist/services/mixpanel/mixpanel.service.js.map +7 -0
- package/dist/services/notifications/notifications.service.d.ts +7 -0
- package/dist/services/notifications/notifications.service.js +38 -0
- package/dist/services/notifications/notifications.service.js.map +7 -0
- package/dist/services/slack/slack-blockkit.service.d.ts +28 -0
- package/dist/services/slack/slack-blockkit.service.js +45 -0
- package/dist/services/slack/slack-blockkit.service.js.map +7 -0
- package/dist/services/slack/slack.service.d.ts +31 -0
- package/dist/services/slack/slack.service.js +118 -0
- package/dist/services/slack/slack.service.js.map +7 -0
- package/dist/services/telemetry/telemetry.service.d.ts +16 -0
- package/dist/services/telemetry/telemetry.service.js +85 -0
- package/dist/services/telemetry/telemetry.service.js.map +7 -0
- package/dist/services/token-issuer/token-issuer.jwks.service.d.ts +13 -0
- package/dist/services/token-issuer/token-issuer.jwks.service.js +76 -0
- package/dist/services/token-issuer/token-issuer.jwks.service.js.map +7 -0
- package/dist/services/wordpress/wordpress.service.d.ts +15 -0
- package/dist/services/wordpress/wordpress.service.js +111 -0
- package/dist/services/wordpress/wordpress.service.js.map +7 -0
- package/dist/types/general.types.d.ts +61 -0
- package/dist/types/general.types.js +1 -0
- package/dist/types/general.types.js.map +7 -0
- package/dist/utils/api.d.ts +31 -0
- package/dist/utils/api.js +400 -0
- package/dist/utils/api.js.map +7 -0
- package/dist/utils/cache.d.ts +7 -0
- package/dist/utils/cache.js +25 -0
- package/dist/utils/cache.js.map +7 -0
- package/dist/utils/ccma-metrics.d.ts +18 -0
- package/dist/utils/ccma-metrics.js +37 -0
- package/dist/utils/ccma-metrics.js.map +7 -0
- package/dist/utils/environments.d.ts +11 -0
- package/dist/utils/environments.js +148 -0
- package/dist/utils/environments.js.map +7 -0
- package/dist/utils/errors.d.ts +5 -0
- package/dist/utils/errors.js +11 -0
- package/dist/utils/errors.js.map +7 -0
- package/dist/utils/frontendCache.d.ts +26 -0
- package/dist/utils/frontendCache.js +121 -0
- package/dist/utils/frontendCache.js.map +7 -0
- package/dist/utils/token-issuer.utils.d.ts +8 -0
- package/dist/utils/token-issuer.utils.js +19 -0
- package/dist/utils/token-issuer.utils.js.map +7 -0
- package/package.json +57 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/services/litellm/litellm.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 RequestBaseParams,\n RequestBaseServiceContext,\n} from '../../types/general.types.js'\nimport { request } from '../../utils/api.js'\nimport { HttpError } from '../../utils/errors.js'\n\n/**\n * Request to create a new team in LiteLLM\n * POST /team/new\n */\nexport interface CreateTeamRequest extends RequestBaseParams {\n options: {\n /** Base URL for LiteLLM API */\n litellmApiBaseUrl: string\n /** API token for authentication */\n apiToken: string\n /** Team alias/name */\n team_alias: string\n /** Maximum budget for the team */\n max_budget?: number\n /** Budget duration (e.g., '30d', '1mo') */\n budget_duration?: string\n }\n}\n\n/**\n * Response from creating a new team\n */\nexport interface CreateTeamResponse {\n team_id: string\n team_alias: string\n max_budget?: number\n budget_duration?: string\n created_at?: string\n [key: string]: any\n}\n\n/**\n * Request to update a team's budget in LiteLLM\n * POST /team/update\n */\nexport interface UpdateTeamBudgetRequest extends RequestBaseParams {\n options: {\n /** Base URL for LiteLLM API */\n litellmApiBaseUrl: string\n /** API token for authentication */\n apiToken: string\n /** Team ID to update */\n team_id: string\n /** New maximum budget for the team */\n max_budget: number\n }\n}\n\n/**\n * Response from updating a team's budget\n */\nexport interface UpdateTeamBudgetResponse {\n team_id: string\n team_alias?: string\n max_budget: number\n budget_duration?: string\n [key: string]: any\n}\n\n/**\n * Request to update a key's budget in LiteLLM\n * POST /key/update\n */\nexport interface UpdateKeyBudgetRequest extends RequestBaseParams {\n options: {\n /** Base URL for LiteLLM API */\n litellmApiBaseUrl: string\n /** API token for authentication */\n apiToken: string\n /** Key to update */\n key: string\n /** New maximum budget for the key */\n max_budget: number\n }\n}\n\n/**\n * Response from updating a key's budget\n */\nexport interface UpdateKeyBudgetResponse {\n key: string\n max_budget: number\n [key: string]: any\n}\n\n/**\n * Request to delete a team\n * POST /team/delete\n */\nexport interface DeleteTeamRequest extends RequestBaseParams {\n options: {\n /** Base URL for LiteLLM API */\n litellmApiBaseUrl: string\n /** API token for authentication */\n apiToken: string\n /** Team ID to delete */\n team_id: string\n }\n}\n\n/**\n * Response from deleting a team\n */\nexport interface DeleteTeamResponse {\n deleted_teams: string[]\n [key: string]: any\n}\n\n/**\n * Request to generate a key for a team\n * POST /key/generate\n */\nexport interface GenerateKeyRequest extends RequestBaseParams {\n options: {\n /** Base URL for LiteLLM API */\n litellmApiBaseUrl: string\n /** API token for authentication */\n apiToken: string\n /** Team ID to generate key for */\n team_id: string\n /** Models the key can access */\n models?: string[]\n /** Optional key alias */\n key_alias?: string\n /** Duration for the key */\n duration?: string\n /** Additional metadata */\n metadata?: Record<string, any>\n /** Maximum budget for this key */\n max_budget?: number\n /** Budget duration */\n budget_duration?: string\n }\n}\n\n/**\n * Response from generating a key\n */\nexport interface GenerateKeyResponse {\n key: string\n key_name?: string\n expires?: string\n team_id: string\n metadata?: Record<string, any>\n [key: string]: any\n}\n\n/**\n * Request to block a key\n * POST /key/block\n */\nexport interface BlockKeyRequest extends RequestBaseParams {\n options: {\n /** Base URL for LiteLLM API */\n litellmApiBaseUrl: string\n /** API token for authentication */\n apiToken: string\n /** Key to block */\n key: string\n }\n}\n\n/**\n * Response from blocking a key\n */\nexport interface BlockKeyResponse {\n status: string\n message?: string\n [key: string]: any\n}\n\n/**\n * Request to unblock a key\n * POST /key/unblock\n */\nexport interface UnblockKeyRequest extends RequestBaseParams {\n options: {\n /** Base URL for LiteLLM API */\n litellmApiBaseUrl: string\n /** API token for authentication */\n apiToken: string\n /** Key to unblock */\n key: string\n }\n}\n\n/**\n * Response from unblocking a key\n */\nexport interface UnblockKeyResponse {\n status: string\n message?: string\n [key: string]: any\n}\n\n/**\n * Request to get key info\n * GET /key/info\n */\nexport interface GetKeyInfoRequest extends RequestBaseParams {\n options: {\n /** Base URL for LiteLLM API */\n litellmApiBaseUrl: string\n /** API token for authentication */\n apiToken: string\n /** Key to get info for */\n key: string\n }\n}\n\n/**\n * Request to delete a key\n * POST /key/delete\n */\nexport interface DeleteKeyRequest extends RequestBaseParams {\n options: {\n /** Base URL for LiteLLM API */\n litellmApiBaseUrl: string\n /** API token for authentication */\n apiToken: string\n /** Key to delete */\n key: string\n }\n}\n\n/**\n * Response from deleting a key\n */\nexport interface DeleteKeyResponse {\n deleted_keys: string[]\n [key: string]: any\n}\n\n/**\n * Response from getting key info including usage and spend\n */\nexport interface GetKeyInfoResponse {\n info: {\n key: string\n team_id: string\n spend?: number\n usage?: {\n total_tokens?: number\n prompt_tokens?: number\n completion_tokens?: number\n }\n max_budget?: number\n budget_duration?: string\n blocked?: boolean\n created_at?: string\n expires_at?: string\n metadata?: Record<string, any>\n [key: string]: any\n }\n}\n\n/**\n * Service for interacting with LiteLLM API\n * API Documentation: https://camunda.litellm-sandbox.ai\n */\nexport class LiteLLMService {\n /**\n * Create a new team in LiteLLM\n * POST /team/new\n */\n public static async createTeam(\n params: CreateTeamRequest,\n ): Promise<CreateTeamResponse> {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: 'LiteLLMService.createTeam',\n url: `${params.options.litellmApiBaseUrl}/team/new`,\n normalizedUrl: '/team/new',\n type: 'post',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'litellm',\n type: 'external',\n },\n }\n\n const body = {\n team_alias: params.options.team_alias,\n ...(params.options.max_budget !== undefined && {\n max_budget: params.options.max_budget,\n }),\n ...(params.options.budget_duration && {\n budget_duration: params.options.budget_duration,\n }),\n }\n\n const response = await request<CreateTeamResponse>({\n config: params.config,\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n type: 'json',\n headers: {\n Authorization: `Bearer ${params.options.apiToken}`,\n },\n body,\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 return response.body!\n }\n\n /**\n * Update a team's budget in LiteLLM\n * POST /team/update\n */\n public static async updateTeamBudget(\n params: UpdateTeamBudgetRequest,\n ): Promise<UpdateTeamBudgetResponse> {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: 'LiteLLMService.updateTeamBudget',\n url: `${params.options.litellmApiBaseUrl}/team/update`,\n normalizedUrl: '/team/update',\n type: 'post',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'litellm',\n type: 'external',\n },\n }\n\n const body = {\n team_id: params.options.team_id,\n max_budget: params.options.max_budget,\n }\n\n const response = await request<UpdateTeamBudgetResponse>({\n config: params.config,\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n type: 'json',\n headers: {\n Authorization: `Bearer ${params.options.apiToken}`,\n },\n body,\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 return response.body!\n }\n\n /**\n * Update a key's budget in LiteLLM\n * POST /key/update\n */\n public static async updateKeyBudget(\n params: UpdateKeyBudgetRequest,\n ): Promise<UpdateKeyBudgetResponse> {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: 'LiteLLMService.updateKeyBudget',\n url: `${params.options.litellmApiBaseUrl}/key/update`,\n normalizedUrl: '/key/update',\n type: 'post',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'litellm',\n type: 'external',\n },\n }\n\n const body = {\n key: params.options.key,\n max_budget: params.options.max_budget,\n }\n\n const response = await request<UpdateKeyBudgetResponse>({\n config: params.config,\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n type: 'json',\n headers: {\n Authorization: `Bearer ${params.options.apiToken}`,\n },\n body,\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 return response.body!\n }\n\n /**\n * Generate a key for a team\n * POST /key/generate\n */\n public static async generateKey(\n params: GenerateKeyRequest,\n ): Promise<GenerateKeyResponse> {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: 'LiteLLMService.generateKey',\n url: `${params.options.litellmApiBaseUrl}/key/generate`,\n normalizedUrl: '/key/generate',\n type: 'post',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'litellm',\n type: 'external',\n },\n }\n\n const body = {\n team_id: params.options.team_id,\n key_type: 'llm_api',\n allowed_routes: ['/chat/completions'],\n ...(params.options.models && { models: params.options.models }),\n ...(params.options.key_alias && { key_alias: params.options.key_alias }),\n ...(params.options.duration && { duration: params.options.duration }),\n ...(params.options.metadata && { metadata: params.options.metadata }),\n ...(params.options.max_budget !== undefined && {\n max_budget: params.options.max_budget,\n }),\n ...(params.options.budget_duration && {\n budget_duration: params.options.budget_duration,\n }),\n }\n\n const response = await request<GenerateKeyResponse>({\n config: params.config,\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n type: 'json',\n headers: {\n Authorization: `Bearer ${params.options.apiToken}`,\n },\n body,\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 return response.body!\n }\n\n /**\n * Block a key to quickly disable it\n * POST /key/block\n */\n public static async blockKey(\n params: BlockKeyRequest,\n ): Promise<BlockKeyResponse> {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: 'LiteLLMService.blockKey',\n url: `${params.options.litellmApiBaseUrl}/key/block`,\n normalizedUrl: '/key/block',\n type: 'post',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'litellm',\n type: 'external',\n },\n }\n\n const body = {\n key: params.options.key,\n }\n\n const response = await request<BlockKeyResponse>({\n config: params.config,\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n type: 'json',\n headers: {\n Authorization: `Bearer ${params.options.apiToken}`,\n },\n body,\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 return response.body!\n }\n\n /**\n * Unblock a key to re-enable it\n * POST /key/unblock\n */\n public static async unblockKey(\n params: UnblockKeyRequest,\n ): Promise<UnblockKeyResponse> {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: 'LiteLLMService.unblockKey',\n url: `${params.options.litellmApiBaseUrl}/key/unblock`,\n normalizedUrl: '/key/unblock',\n type: 'post',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'litellm',\n type: 'external',\n },\n }\n\n const body = {\n key: params.options.key,\n }\n\n const response = await request<UnblockKeyResponse>({\n config: params.config,\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n type: 'json',\n headers: {\n Authorization: `Bearer ${params.options.apiToken}`,\n },\n body,\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 return response.body!\n }\n\n /**\n * Get information about a key including usage and spend\n * GET /key/info\n */\n public static async getKeyInfo(\n params: GetKeyInfoRequest,\n ): Promise<GetKeyInfoResponse> {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: 'LiteLLMService.getKeyInfo',\n url: `${params.options.litellmApiBaseUrl}/key/info?key=${encodeURIComponent(params.options.key)}`,\n normalizedUrl: '/key/info',\n type: 'get',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'litellm',\n type: 'external',\n },\n }\n\n const response = await request<GetKeyInfoResponse>({\n config: params.config,\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n headers: {\n Authorization: `Bearer ${params.options.apiToken}`,\n },\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 return response.body!\n }\n\n /**\n * Delete a key\n * POST /key/delete\n */\n public static async deleteKey(\n params: DeleteKeyRequest,\n ): Promise<DeleteKeyResponse> {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: 'LiteLLMService.deleteKey',\n url: `${params.options.litellmApiBaseUrl}/key/delete`,\n normalizedUrl: '/key/delete',\n type: 'post',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'litellm',\n type: 'external',\n },\n }\n\n const body = {\n keys: [params.options.key],\n }\n\n const response = await request<DeleteKeyResponse>({\n config: params.config,\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n type: 'json',\n headers: {\n Authorization: `Bearer ${params.options.apiToken}`,\n },\n body,\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 return response.body!\n }\n\n /**\n * Delete a team\n * POST /team/delete\n */\n public static async deleteTeam(\n params: DeleteTeamRequest,\n ): Promise<DeleteTeamResponse> {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: 'LiteLLMService.deleteTeam',\n url: `${params.options.litellmApiBaseUrl}/team/delete`,\n normalizedUrl: '/team/delete',\n type: 'post',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'litellm',\n type: 'external',\n },\n }\n\n const body = {\n team_ids: [params.options.team_id],\n }\n\n const response = await request<DeleteTeamResponse>({\n config: params.config,\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n type: 'json',\n headers: {\n Authorization: `Bearer ${params.options.apiToken}`,\n },\n body,\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 return response.body!\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { RequestBaseParams } from '../../types/general.types.js';
|
|
2
|
+
import { type ServiceAudience } from '../../utils/environments.js';
|
|
3
|
+
export interface LoginPayload extends RequestBaseParams {
|
|
4
|
+
params: {
|
|
5
|
+
audienceId: ServiceAudience;
|
|
6
|
+
clientId: string;
|
|
7
|
+
clientSecret: string;
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
export declare class LoginService {
|
|
11
|
+
private readonly payload;
|
|
12
|
+
private cachedToken;
|
|
13
|
+
constructor(payload: LoginPayload);
|
|
14
|
+
getToken(): Promise<string>;
|
|
15
|
+
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { request } from "../../utils/api.js";
|
|
2
|
+
import { getEnvParam } from "../../utils/environments.js";
|
|
3
|
+
import { HttpError } from "../../utils/errors.js";
|
|
4
|
+
import { TokenIssuerUtils } from "../../utils/token-issuer.utils.js";
|
|
5
|
+
class LoginService {
|
|
6
|
+
constructor(payload) {
|
|
7
|
+
this.payload = payload;
|
|
8
|
+
}
|
|
9
|
+
async getToken() {
|
|
10
|
+
if (this.cachedToken && this.cachedToken.expiresAt > Date.now()) {
|
|
11
|
+
return this.cachedToken.accessToken;
|
|
12
|
+
}
|
|
13
|
+
const params = this.payload.params;
|
|
14
|
+
const audience = getEnvParam(params.audienceId, this.payload.config);
|
|
15
|
+
const serviceContext = {
|
|
16
|
+
method: {
|
|
17
|
+
name: `LoginService.getToken`,
|
|
18
|
+
url: "oauth/token",
|
|
19
|
+
normalizedUrl: "oauth/token",
|
|
20
|
+
type: "post"
|
|
21
|
+
},
|
|
22
|
+
source: this.payload.config.metrics?.source || "unset",
|
|
23
|
+
target: {
|
|
24
|
+
name: "token-issuer",
|
|
25
|
+
type: "internal"
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
const response = await request({
|
|
29
|
+
config: this.payload.config,
|
|
30
|
+
base: {
|
|
31
|
+
id: TokenIssuerUtils.getBaseId({
|
|
32
|
+
params: this.payload,
|
|
33
|
+
serviceContext
|
|
34
|
+
})
|
|
35
|
+
},
|
|
36
|
+
url: serviceContext.method.url,
|
|
37
|
+
method: serviceContext.method.type,
|
|
38
|
+
metricsDetails: serviceContext,
|
|
39
|
+
body: {
|
|
40
|
+
audience,
|
|
41
|
+
grant_type: "client_credentials",
|
|
42
|
+
client_id: params.clientId,
|
|
43
|
+
client_secret: params.clientSecret
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
if (!response.ok) {
|
|
47
|
+
throw new HttpError(
|
|
48
|
+
`${serviceContext.method.name}: ${response.status} ${response.statusText}`,
|
|
49
|
+
response.status,
|
|
50
|
+
response.statusText
|
|
51
|
+
);
|
|
52
|
+
}
|
|
53
|
+
this.cachedToken = {
|
|
54
|
+
tokenType: response.body.token_type,
|
|
55
|
+
accessToken: response.body.access_token,
|
|
56
|
+
fetchedAt: Date.now(),
|
|
57
|
+
expiresIn: response.body.expires_in,
|
|
58
|
+
expiresAt: Date.now() + response.body.expires_in * 1e3 * 0.95
|
|
59
|
+
};
|
|
60
|
+
return this.cachedToken.accessToken;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
export {
|
|
64
|
+
LoginService
|
|
65
|
+
};
|
|
66
|
+
//# sourceMappingURL=login.service.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/services/login/login.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 RequestBaseParams,\n RequestBaseServiceContext,\n} from '../../types/general.types.js'\nimport { request } from '../../utils/api.js'\nimport { getEnvParam, type ServiceAudience } from '../../utils/environments.js'\nimport { HttpError } from '../../utils/errors.js'\nimport { TokenIssuerUtils } from '../../utils/token-issuer.utils.js'\n\nexport interface LoginPayload extends RequestBaseParams {\n params: {\n audienceId: ServiceAudience\n clientId: string\n clientSecret: string\n }\n}\n\ninterface CachedToken {\n tokenType: string\n accessToken: string\n fetchedAt: number\n expiresIn: number\n expiresAt: number\n}\n\nexport class LoginService {\n private cachedToken: CachedToken | undefined\n\n constructor(private readonly payload: LoginPayload) {}\n\n public async getToken(): Promise<string> {\n if (this.cachedToken && this.cachedToken.expiresAt > Date.now()) {\n return this.cachedToken.accessToken\n }\n\n const params = this.payload.params\n\n const audience = getEnvParam(params.audienceId, this.payload.config)\n\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: `LoginService.getToken`,\n url: 'oauth/token',\n normalizedUrl: 'oauth/token',\n type: 'post',\n },\n source: this.payload.config.metrics?.source || 'unset',\n target: {\n name: 'token-issuer',\n type: 'internal',\n },\n }\n\n const response = await request<any>({\n config: this.payload.config,\n base: {\n id: TokenIssuerUtils.getBaseId({\n params: this.payload,\n serviceContext,\n }),\n },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n body: {\n audience,\n grant_type: 'client_credentials',\n client_id: params.clientId,\n client_secret: params.clientSecret,\n },\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 this.cachedToken = {\n tokenType: response.body.token_type,\n accessToken: response.body.access_token,\n fetchedAt: Date.now(),\n expiresIn: response.body.expires_in,\n expiresAt: Date.now() + response.body.expires_in * 1000 * 0.95,\n }\n return this.cachedToken.accessToken\n }\n}\n"],
|
|
5
|
+
"mappings": "AAUA,SAAS,eAAe;AACxB,SAAS,mBAAyC;AAClD,SAAS,iBAAiB;AAC1B,SAAS,wBAAwB;AAkB1B,MAAM,aAAa;AAAA,EAGxB,YAA6B,SAAuB;AAAvB;AAAA,EAAwB;AAAA,EAErD,MAAa,WAA4B;AACvC,QAAI,KAAK,eAAe,KAAK,YAAY,YAAY,KAAK,IAAI,GAAG;AAC/D,aAAO,KAAK,YAAY;AAAA,IAC1B;AAEA,UAAM,SAAS,KAAK,QAAQ;AAE5B,UAAM,WAAW,YAAY,OAAO,YAAY,KAAK,QAAQ,MAAM;AAEnE,UAAM,iBAA4C;AAAA,MAChD,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,KAAK;AAAA,QACL,eAAe;AAAA,QACf,MAAM;AAAA,MACR;AAAA,MACA,QAAQ,KAAK,QAAQ,OAAO,SAAS,UAAU;AAAA,MAC/C,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAEA,UAAM,WAAW,MAAM,QAAa;AAAA,MAClC,QAAQ,KAAK,QAAQ;AAAA,MACrB,MAAM;AAAA,QACJ,IAAI,iBAAiB,UAAU;AAAA,UAC7B,QAAQ,KAAK;AAAA,UACb;AAAA,QACF,CAAC;AAAA,MACH;AAAA,MACA,KAAK,eAAe,OAAO;AAAA,MAC3B,QAAQ,eAAe,OAAO;AAAA,MAC9B,gBAAgB;AAAA,MAChB,MAAM;AAAA,QACJ;AAAA,QACA,YAAY;AAAA,QACZ,WAAW,OAAO;AAAA,QAClB,eAAe,OAAO;AAAA,MACxB;AAAA,IACF,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;AAEA,SAAK,cAAc;AAAA,MACjB,WAAW,SAAS,KAAK;AAAA,MACzB,aAAa,SAAS,KAAK;AAAA,MAC3B,WAAW,KAAK,IAAI;AAAA,MACpB,WAAW,SAAS,KAAK;AAAA,MACzB,WAAW,KAAK,IAAI,IAAI,SAAS,KAAK,aAAa,MAAO;AAAA,IAC5D;AACA,WAAO,KAAK,YAAY;AAAA,EAC1B;AACF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { RequestBaseParams } from '../../types/general.types.js';
|
|
2
|
+
export interface MixpanelSetGroupPropertiesOnceRequest extends RequestBaseParams {
|
|
3
|
+
options: {
|
|
4
|
+
token: string;
|
|
5
|
+
groupKey: string;
|
|
6
|
+
properties: {
|
|
7
|
+
[key: string]: string;
|
|
8
|
+
};
|
|
9
|
+
groupId?: string;
|
|
10
|
+
groupType: 'group-set-once' | 'group-set';
|
|
11
|
+
retries?: number;
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
export declare class MixpanelService {
|
|
15
|
+
static setGroupPropertiesOnce(params: MixpanelSetGroupPropertiesOnceRequest): Promise<void>;
|
|
16
|
+
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { log, request } from "../../utils/api.js";
|
|
2
|
+
import { HttpError } from "../../utils/errors.js";
|
|
3
|
+
class MixpanelService {
|
|
4
|
+
static async setGroupPropertiesOnce(params) {
|
|
5
|
+
const serviceContext = {
|
|
6
|
+
method: {
|
|
7
|
+
name: `MixpanelService.setGroupPropertiesOnce`,
|
|
8
|
+
url: `groups#${params.options.groupType}`,
|
|
9
|
+
normalizedUrl: `groups#${params.options.groupType}`,
|
|
10
|
+
type: "post"
|
|
11
|
+
},
|
|
12
|
+
source: params.config.metrics?.source || "unset",
|
|
13
|
+
target: {
|
|
14
|
+
name: "mixpanel",
|
|
15
|
+
type: "external"
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
const setPropertyName = params.options.groupType === "group-set-once" ? "set_once" : "set";
|
|
19
|
+
const body = {
|
|
20
|
+
$token: params.options.token,
|
|
21
|
+
$group_key: params.options.groupKey,
|
|
22
|
+
$group_id: params.options.groupId
|
|
23
|
+
};
|
|
24
|
+
body[`$${setPropertyName}`] = params.options.properties;
|
|
25
|
+
const headers = {
|
|
26
|
+
Accept: "text/plain",
|
|
27
|
+
"Content-Type": "content-type: application/json"
|
|
28
|
+
};
|
|
29
|
+
const requestConfig = {
|
|
30
|
+
config: params.config,
|
|
31
|
+
base: {
|
|
32
|
+
id: "mixpanel"
|
|
33
|
+
},
|
|
34
|
+
url: serviceContext.method.url,
|
|
35
|
+
method: serviceContext.method.type,
|
|
36
|
+
metricsDetails: serviceContext,
|
|
37
|
+
type: "none",
|
|
38
|
+
responseType: "none",
|
|
39
|
+
body,
|
|
40
|
+
headers
|
|
41
|
+
};
|
|
42
|
+
if (params.config.stage === "dev") {
|
|
43
|
+
log(requestConfig, "debug", `Mixpanel setGroupPropertiesOnce`, {
|
|
44
|
+
requestConfig
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
if (!params.options.groupId || Object.keys(params.options.properties).length === 0) {
|
|
48
|
+
log(requestConfig, "debug", "No group id or properties to set");
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
const response = await request(requestConfig);
|
|
52
|
+
if (!response.ok) {
|
|
53
|
+
const MAX_RETRIES = 5;
|
|
54
|
+
let retries = params.options.retries || 0;
|
|
55
|
+
if (retries > 0) {
|
|
56
|
+
if (retries > MAX_RETRIES) {
|
|
57
|
+
retries = MAX_RETRIES;
|
|
58
|
+
}
|
|
59
|
+
const retryWaitingTime = (MAX_RETRIES - retries + 1) * 500;
|
|
60
|
+
log(
|
|
61
|
+
requestConfig,
|
|
62
|
+
"debug",
|
|
63
|
+
`Mixpanel setGroupProperties error, retrying. Retries left: ${retries}`
|
|
64
|
+
);
|
|
65
|
+
await new Promise((resolve) => {
|
|
66
|
+
setTimeout(() => {
|
|
67
|
+
resolve();
|
|
68
|
+
}, retryWaitingTime);
|
|
69
|
+
});
|
|
70
|
+
await MixpanelService.setGroupPropertiesOnce({
|
|
71
|
+
...params,
|
|
72
|
+
options: { ...params.options, retries: retries - 1 }
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
throw new HttpError(
|
|
76
|
+
`${serviceContext.method.name}: ${response.status} ${response.statusText}`,
|
|
77
|
+
response.status,
|
|
78
|
+
response.statusText
|
|
79
|
+
);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
export {
|
|
84
|
+
MixpanelService
|
|
85
|
+
};
|
|
86
|
+
//# sourceMappingURL=mixpanel.service.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/services/mixpanel/mixpanel.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 RequestBaseParams,\n RequestBaseServiceContext,\n} from '../../types/general.types.js'\nimport { log, type RequestPayload, request } from '../../utils/api.js'\nimport { HttpError } from '../../utils/errors.js'\n\nexport interface MixpanelSetGroupPropertiesOnceRequest\n extends RequestBaseParams {\n options: {\n token: string\n groupKey: string\n properties: { [key: string]: string }\n groupId?: string\n groupType: 'group-set-once' | 'group-set'\n retries?: number\n }\n}\n\nexport class MixpanelService {\n public static async setGroupPropertiesOnce(\n params: MixpanelSetGroupPropertiesOnceRequest,\n ) {\n // 2021-09-16: mixpanel node lib doesn't support group handling\n // using http api instead: https://developer.mixpanel.com/reference/group-profiles\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: `MixpanelService.setGroupPropertiesOnce`,\n url: `groups#${params.options.groupType}`,\n normalizedUrl: `groups#${params.options.groupType}`,\n type: 'post',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'mixpanel',\n type: 'external',\n },\n }\n\n const setPropertyName =\n params.options.groupType === 'group-set-once' ? 'set_once' : 'set'\n\n const body: any = {\n $token: params.options.token,\n $group_key: params.options.groupKey,\n $group_id: params.options.groupId,\n }\n body[`$${setPropertyName}`] = params.options.properties\n\n const headers = {\n Accept: 'text/plain',\n 'Content-Type': 'content-type: application/json',\n }\n\n const requestConfig: RequestPayload = {\n config: params.config,\n base: {\n id: 'mixpanel',\n },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n type: 'none',\n responseType: 'none',\n body,\n headers,\n }\n\n if (params.config.stage === 'dev') {\n log(requestConfig, 'debug', `Mixpanel setGroupPropertiesOnce`, {\n requestConfig,\n })\n }\n\n if (\n !params.options.groupId ||\n Object.keys(params.options.properties).length === 0\n ) {\n log(requestConfig, 'debug', 'No group id or properties to set')\n return\n }\n\n const response = await request(requestConfig)\n if (!response.ok) {\n const MAX_RETRIES = 5\n let retries = params.options.retries || 0\n if (retries > 0) {\n if (retries > MAX_RETRIES) {\n retries = MAX_RETRIES\n }\n const retryWaitingTime = (MAX_RETRIES - retries + 1) * 500\n log(\n requestConfig,\n 'debug',\n `Mixpanel setGroupProperties error, retrying. Retries left: ${retries}`,\n )\n await new Promise<void>((resolve) => {\n setTimeout(() => {\n resolve()\n }, retryWaitingTime)\n })\n await MixpanelService.setGroupPropertiesOnce({\n ...params,\n options: { ...params.options, retries: retries - 1 },\n })\n }\n\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": "AAUA,SAAS,KAA0B,eAAe;AAClD,SAAS,iBAAiB;AAcnB,MAAM,gBAAgB;AAAA,EAC3B,aAAoB,uBAClB,QACA;AAGA,UAAM,iBAA4C;AAAA,MAChD,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,KAAK,UAAU,OAAO,QAAQ,SAAS;AAAA,QACvC,eAAe,UAAU,OAAO,QAAQ,SAAS;AAAA,QACjD,MAAM;AAAA,MACR;AAAA,MACA,QAAQ,OAAO,OAAO,SAAS,UAAU;AAAA,MACzC,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAEA,UAAM,kBACJ,OAAO,QAAQ,cAAc,mBAAmB,aAAa;AAE/D,UAAM,OAAY;AAAA,MAChB,QAAQ,OAAO,QAAQ;AAAA,MACvB,YAAY,OAAO,QAAQ;AAAA,MAC3B,WAAW,OAAO,QAAQ;AAAA,IAC5B;AACA,SAAK,IAAI,eAAe,EAAE,IAAI,OAAO,QAAQ;AAE7C,UAAM,UAAU;AAAA,MACd,QAAQ;AAAA,MACR,gBAAgB;AAAA,IAClB;AAEA,UAAM,gBAAgC;AAAA,MACpC,QAAQ,OAAO;AAAA,MACf,MAAM;AAAA,QACJ,IAAI;AAAA,MACN;AAAA,MACA,KAAK,eAAe,OAAO;AAAA,MAC3B,QAAQ,eAAe,OAAO;AAAA,MAC9B,gBAAgB;AAAA,MAChB,MAAM;AAAA,MACN,cAAc;AAAA,MACd;AAAA,MACA;AAAA,IACF;AAEA,QAAI,OAAO,OAAO,UAAU,OAAO;AACjC,UAAI,eAAe,SAAS,mCAAmC;AAAA,QAC7D;AAAA,MACF,CAAC;AAAA,IACH;AAEA,QACE,CAAC,OAAO,QAAQ,WAChB,OAAO,KAAK,OAAO,QAAQ,UAAU,EAAE,WAAW,GAClD;AACA,UAAI,eAAe,SAAS,kCAAkC;AAC9D;AAAA,IACF;AAEA,UAAM,WAAW,MAAM,QAAQ,aAAa;AAC5C,QAAI,CAAC,SAAS,IAAI;AAChB,YAAM,cAAc;AACpB,UAAI,UAAU,OAAO,QAAQ,WAAW;AACxC,UAAI,UAAU,GAAG;AACf,YAAI,UAAU,aAAa;AACzB,oBAAU;AAAA,QACZ;AACA,cAAM,oBAAoB,cAAc,UAAU,KAAK;AACvD;AAAA,UACE;AAAA,UACA;AAAA,UACA,8DAA8D,OAAO;AAAA,QACvE;AACA,cAAM,IAAI,QAAc,CAAC,YAAY;AACnC,qBAAW,MAAM;AACf,oBAAQ;AAAA,UACV,GAAG,gBAAgB;AAAA,QACrB,CAAC;AACD,cAAM,gBAAgB,uBAAuB;AAAA,UAC3C,GAAG;AAAA,UACH,SAAS,EAAE,GAAG,OAAO,SAAS,SAAS,UAAU,EAAE;AAAA,QACrD,CAAC;AAAA,MACH;AAEA,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
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { NotificationOptions } from '@camunda/ccma-shared-types';
|
|
2
|
+
import type { RequestBaseParams } from '../../types/general.types.js';
|
|
3
|
+
export declare class NotificationsService {
|
|
4
|
+
static sendNotification(params: {
|
|
5
|
+
notification: NotificationOptions;
|
|
6
|
+
} & RequestBaseParams): Promise<void>;
|
|
7
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { request } from "../../utils/api.js";
|
|
2
|
+
import { HttpError } from "../../utils/errors.js";
|
|
3
|
+
class NotificationsService {
|
|
4
|
+
static async sendNotification(params) {
|
|
5
|
+
const serviceContext = {
|
|
6
|
+
method: {
|
|
7
|
+
name: `NotificationsService.sendNotification`,
|
|
8
|
+
url: `notifications/${params.notification.type}`,
|
|
9
|
+
normalizedUrl: `notifications/:type`,
|
|
10
|
+
type: "post"
|
|
11
|
+
},
|
|
12
|
+
source: params.config.metrics?.source || "unset",
|
|
13
|
+
target: {
|
|
14
|
+
name: "notifications",
|
|
15
|
+
type: "internal"
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
const response = await request({
|
|
19
|
+
config: params.config,
|
|
20
|
+
base: { id: "notifications" },
|
|
21
|
+
url: serviceContext.method.url,
|
|
22
|
+
method: serviceContext.method.type,
|
|
23
|
+
metricsDetails: serviceContext,
|
|
24
|
+
body: { notification: params.notification }
|
|
25
|
+
});
|
|
26
|
+
if (!response.ok) {
|
|
27
|
+
throw new HttpError(
|
|
28
|
+
`${serviceContext.method.name}: ${response.status} ${response.statusText}`,
|
|
29
|
+
response.status,
|
|
30
|
+
response.statusText
|
|
31
|
+
);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
export {
|
|
36
|
+
NotificationsService
|
|
37
|
+
};
|
|
38
|
+
//# sourceMappingURL=notifications.service.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/services/notifications/notifications.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 { NotificationOptions } 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 NotificationsService {\n public static async sendNotification(\n params: { notification: NotificationOptions } & RequestBaseParams,\n ) {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: `NotificationsService.sendNotification`,\n url: `notifications/${params.notification.type}`,\n normalizedUrl: `notifications/:type`,\n type: 'post',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'notifications',\n type: 'internal',\n },\n }\n\n const response = await request({\n config: params.config,\n base: { id: 'notifications' },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n body: { notification: params.notification },\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": "AAWA,SAAS,eAAe;AACxB,SAAS,iBAAiB;AAEnB,MAAM,qBAAqB;AAAA,EAChC,aAAoB,iBAClB,QACA;AACA,UAAM,iBAA4C;AAAA,MAChD,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,KAAK,iBAAiB,OAAO,aAAa,IAAI;AAAA,QAC9C,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;AAEA,UAAM,WAAW,MAAM,QAAQ;AAAA,MAC7B,QAAQ,OAAO;AAAA,MACf,MAAM,EAAE,IAAI,gBAAgB;AAAA,MAC5B,KAAK,eAAe,OAAO;AAAA,MAC3B,QAAQ,eAAe,OAAO;AAAA,MAC9B,gBAAgB;AAAA,MAChB,MAAM,EAAE,cAAc,OAAO,aAAa;AAAA,IAC5C,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
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { RequestBaseParams } from '../../types/general.types.js';
|
|
2
|
+
export interface SlackBlock {
|
|
3
|
+
type: string;
|
|
4
|
+
[key: string]: any;
|
|
5
|
+
}
|
|
6
|
+
export interface SendBlockKitMessageParams extends RequestBaseParams {
|
|
7
|
+
webhookUrl: string;
|
|
8
|
+
blocks: SlackBlock[];
|
|
9
|
+
}
|
|
10
|
+
export interface SendBlockKitMessageResponse {
|
|
11
|
+
ok: boolean;
|
|
12
|
+
status: number;
|
|
13
|
+
statusText: string;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Service for sending Slack Block Kit messages with full block structure support.
|
|
17
|
+
* Unlike SlackService which only supports simple sections, this service accepts
|
|
18
|
+
* complete Block Kit JSON including buttons and other interactive elements.
|
|
19
|
+
*/
|
|
20
|
+
export declare class SlackBlockKitService {
|
|
21
|
+
/**
|
|
22
|
+
* Send a Block Kit message to a Slack webhook URL.
|
|
23
|
+
*
|
|
24
|
+
* @param params - Parameters including webhook URL, blocks array, and config
|
|
25
|
+
* @returns Response object with ok, status, and statusText
|
|
26
|
+
*/
|
|
27
|
+
static sendBlockKitMessage(params: SendBlockKitMessageParams): Promise<SendBlockKitMessageResponse>;
|
|
28
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { request } from "../../utils/api.js";
|
|
2
|
+
class SlackBlockKitService {
|
|
3
|
+
/**
|
|
4
|
+
* Send a Block Kit message to a Slack webhook URL.
|
|
5
|
+
*
|
|
6
|
+
* @param params - Parameters including webhook URL, blocks array, and config
|
|
7
|
+
* @returns Response object with ok, status, and statusText
|
|
8
|
+
*/
|
|
9
|
+
static async sendBlockKitMessage(params) {
|
|
10
|
+
const serviceContext = {
|
|
11
|
+
method: {
|
|
12
|
+
name: "SlackBlockKitService.sendBlockKitMessage",
|
|
13
|
+
url: params.webhookUrl,
|
|
14
|
+
normalizedUrl: "https://hooks.slack.com/services/:webhookId",
|
|
15
|
+
type: "post"
|
|
16
|
+
},
|
|
17
|
+
source: params.config.metrics?.source || "unset",
|
|
18
|
+
target: {
|
|
19
|
+
name: "slack",
|
|
20
|
+
type: "external"
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
const body = {
|
|
24
|
+
blocks: params.blocks
|
|
25
|
+
};
|
|
26
|
+
const response = await request({
|
|
27
|
+
config: params.config,
|
|
28
|
+
url: serviceContext.method.url,
|
|
29
|
+
method: serviceContext.method.type,
|
|
30
|
+
metricsDetails: serviceContext,
|
|
31
|
+
body,
|
|
32
|
+
type: "json",
|
|
33
|
+
responseType: "none"
|
|
34
|
+
});
|
|
35
|
+
return {
|
|
36
|
+
ok: response.ok,
|
|
37
|
+
status: response.status,
|
|
38
|
+
statusText: response.statusText || ""
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
export {
|
|
43
|
+
SlackBlockKitService
|
|
44
|
+
};
|
|
45
|
+
//# sourceMappingURL=slack-blockkit.service.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/services/slack/slack-blockkit.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 RequestBaseParams,\n RequestBaseServiceContext,\n} from '../../types/general.types.js'\nimport { request } from '../../utils/api.js'\n\n// Slack Block Kit block types\n// https://api.slack.com/reference/block-kit/blocks\nexport interface SlackBlock {\n type: string\n [key: string]: any\n}\n\nexport interface SendBlockKitMessageParams extends RequestBaseParams {\n webhookUrl: string\n blocks: SlackBlock[]\n}\n\nexport interface SendBlockKitMessageResponse {\n ok: boolean\n status: number\n statusText: string\n}\n\n/**\n * Service for sending Slack Block Kit messages with full block structure support.\n * Unlike SlackService which only supports simple sections, this service accepts\n * complete Block Kit JSON including buttons and other interactive elements.\n */\nexport class SlackBlockKitService {\n /**\n * Send a Block Kit message to a Slack webhook URL.\n *\n * @param params - Parameters including webhook URL, blocks array, and config\n * @returns Response object with ok, status, and statusText\n */\n public static async sendBlockKitMessage(\n params: SendBlockKitMessageParams,\n ): Promise<SendBlockKitMessageResponse> {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: 'SlackBlockKitService.sendBlockKitMessage',\n url: params.webhookUrl,\n normalizedUrl: 'https://hooks.slack.com/services/:webhookId',\n type: 'post',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'slack',\n type: 'external',\n },\n }\n\n const body = {\n blocks: params.blocks,\n }\n\n const response = await request<void>({\n config: params.config,\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n body,\n type: 'json',\n responseType: 'none',\n })\n\n return {\n ok: response.ok,\n status: response.status,\n statusText: response.statusText || '',\n }\n }\n}\n"],
|
|
5
|
+
"mappings": "AAUA,SAAS,eAAe;AAyBjB,MAAM,qBAAqB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOhC,aAAoB,oBAClB,QACsC;AACtC,UAAM,iBAA4C;AAAA,MAChD,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,KAAK,OAAO;AAAA,QACZ,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;AAEA,UAAM,OAAO;AAAA,MACX,QAAQ,OAAO;AAAA,IACjB;AAEA,UAAM,WAAW,MAAM,QAAc;AAAA,MACnC,QAAQ,OAAO;AAAA,MACf,KAAK,eAAe,OAAO;AAAA,MAC3B,QAAQ,eAAe,OAAO;AAAA,MAC9B,gBAAgB;AAAA,MAChB;AAAA,MACA,MAAM;AAAA,MACN,cAAc;AAAA,IAChB,CAAC;AAED,WAAO;AAAA,MACL,IAAI,SAAS;AAAA,MACb,QAAQ,SAAS;AAAA,MACjB,YAAY,SAAS,cAAc;AAAA,IACrC;AAAA,EACF;AACF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { RequestBaseParams } from '../../types/general.types.js';
|
|
2
|
+
interface Section {
|
|
3
|
+
type: 'section' | 'divider' | 'context' | 'header';
|
|
4
|
+
text: string;
|
|
5
|
+
}
|
|
6
|
+
export interface IncomingWebhookData {
|
|
7
|
+
url: string;
|
|
8
|
+
sections: Section[];
|
|
9
|
+
}
|
|
10
|
+
export interface IncomingWebhookRequest extends RequestBaseParams {
|
|
11
|
+
options: IncomingWebhookData;
|
|
12
|
+
}
|
|
13
|
+
export interface SlackLookupUserByEmailParams extends RequestBaseParams {
|
|
14
|
+
params: {
|
|
15
|
+
email: string;
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
export interface SlackLookupUserByEmailResponse {
|
|
19
|
+
userId: string;
|
|
20
|
+
}
|
|
21
|
+
export declare class SlackService {
|
|
22
|
+
static incomingWebhook(params: IncomingWebhookRequest): Promise<any>;
|
|
23
|
+
/**
|
|
24
|
+
* Looks up a Slack user by their email address.
|
|
25
|
+
* Requires the config to provide a Slack Bot Token via config.auth.getToken().
|
|
26
|
+
*
|
|
27
|
+
* @returns The Slack user ID, or undefined if not found.
|
|
28
|
+
*/
|
|
29
|
+
static lookupUserByEmail(params: SlackLookupUserByEmailParams): Promise<SlackLookupUserByEmailResponse | undefined>;
|
|
30
|
+
}
|
|
31
|
+
export {};
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { request } from "../../utils/api.js";
|
|
2
|
+
const MAX_BLOCKS_PER_MESSAGE = 50;
|
|
3
|
+
const SLACK_API_BASE_URL = "https://slack.com/api";
|
|
4
|
+
class SlackService {
|
|
5
|
+
static async incomingWebhook(params) {
|
|
6
|
+
const serviceContext = {
|
|
7
|
+
method: {
|
|
8
|
+
name: `SlackService.incomingWebhook`,
|
|
9
|
+
url: params.options.url,
|
|
10
|
+
normalizedUrl: `https://hooks.slack.com/services/:webhookId`,
|
|
11
|
+
type: "post"
|
|
12
|
+
},
|
|
13
|
+
source: params.config.metrics?.source || "unset",
|
|
14
|
+
target: {
|
|
15
|
+
name: "slack",
|
|
16
|
+
type: "external"
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
const blocks = params.options.sections.map((section) => {
|
|
20
|
+
let text;
|
|
21
|
+
let elements;
|
|
22
|
+
switch (section.type) {
|
|
23
|
+
case "section":
|
|
24
|
+
text = {
|
|
25
|
+
type: "mrkdwn",
|
|
26
|
+
text: section.text
|
|
27
|
+
};
|
|
28
|
+
break;
|
|
29
|
+
case "context":
|
|
30
|
+
elements = [
|
|
31
|
+
{
|
|
32
|
+
type: "mrkdwn",
|
|
33
|
+
text: section.text
|
|
34
|
+
}
|
|
35
|
+
];
|
|
36
|
+
break;
|
|
37
|
+
case "header":
|
|
38
|
+
text = {
|
|
39
|
+
type: "plain_text",
|
|
40
|
+
text: section.text,
|
|
41
|
+
emoji: true
|
|
42
|
+
};
|
|
43
|
+
break;
|
|
44
|
+
}
|
|
45
|
+
return {
|
|
46
|
+
type: section.type,
|
|
47
|
+
text,
|
|
48
|
+
elements
|
|
49
|
+
};
|
|
50
|
+
});
|
|
51
|
+
const bodies = [];
|
|
52
|
+
if (blocks.length > MAX_BLOCKS_PER_MESSAGE) {
|
|
53
|
+
const blocksCopy = [...blocks];
|
|
54
|
+
while (blocksCopy.length > 0) {
|
|
55
|
+
bodies.push({
|
|
56
|
+
blocks: blocksCopy.splice(0, MAX_BLOCKS_PER_MESSAGE)
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
} else {
|
|
60
|
+
bodies.push({
|
|
61
|
+
blocks
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
for (let index = 0; index < bodies.length; index++) {
|
|
65
|
+
await request({
|
|
66
|
+
config: params.config,
|
|
67
|
+
url: serviceContext.method.url,
|
|
68
|
+
method: serviceContext.method.type,
|
|
69
|
+
metricsDetails: serviceContext,
|
|
70
|
+
body: bodies[index],
|
|
71
|
+
type: "json",
|
|
72
|
+
responseType: "none"
|
|
73
|
+
});
|
|
74
|
+
if (index < bodies.length - 1) {
|
|
75
|
+
await new Promise((resolve) => {
|
|
76
|
+
setTimeout(resolve, 1e3);
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Looks up a Slack user by their email address.
|
|
83
|
+
* Requires the config to provide a Slack Bot Token via config.auth.getToken().
|
|
84
|
+
*
|
|
85
|
+
* @returns The Slack user ID, or undefined if not found.
|
|
86
|
+
*/
|
|
87
|
+
static async lookupUserByEmail(params) {
|
|
88
|
+
const url = `${SLACK_API_BASE_URL}/users.lookupByEmail?email=${encodeURIComponent(params.params.email)}`;
|
|
89
|
+
const serviceContext = {
|
|
90
|
+
method: {
|
|
91
|
+
name: "SlackService.lookupUserByEmail",
|
|
92
|
+
url,
|
|
93
|
+
normalizedUrl: `${SLACK_API_BASE_URL}/users.lookupByEmail`,
|
|
94
|
+
type: "get"
|
|
95
|
+
},
|
|
96
|
+
source: params.config.metrics?.source || "unset",
|
|
97
|
+
target: {
|
|
98
|
+
name: "slack",
|
|
99
|
+
type: "external"
|
|
100
|
+
}
|
|
101
|
+
};
|
|
102
|
+
const response = await request({
|
|
103
|
+
config: params.config,
|
|
104
|
+
url,
|
|
105
|
+
method: serviceContext.method.type,
|
|
106
|
+
metricsDetails: serviceContext,
|
|
107
|
+
responseType: "json"
|
|
108
|
+
});
|
|
109
|
+
if (!response.ok || !response.body?.ok || !response.body?.user?.id) {
|
|
110
|
+
return void 0;
|
|
111
|
+
}
|
|
112
|
+
return { userId: response.body.user.id };
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
export {
|
|
116
|
+
SlackService
|
|
117
|
+
};
|
|
118
|
+
//# sourceMappingURL=slack.service.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/services/slack/slack.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 RequestBaseParams,\n RequestBaseServiceContext,\n} from '../../types/general.types.js'\nimport { request } from '../../utils/api.js'\n\n// https://api.slack.com/reference/block-kit/blocks\nconst MAX_BLOCKS_PER_MESSAGE = 50\n\nconst SLACK_API_BASE_URL = 'https://slack.com/api'\n\ninterface Section {\n type: 'section' | 'divider' | 'context' | 'header'\n text: string\n}\n\nexport interface IncomingWebhookData {\n url: string\n sections: Section[]\n}\n\nexport interface IncomingWebhookRequest extends RequestBaseParams {\n options: IncomingWebhookData\n}\n\nexport interface SlackLookupUserByEmailParams extends RequestBaseParams {\n params: {\n email: string\n }\n}\n\nexport interface SlackLookupUserByEmailResponse {\n userId: string\n}\n\nexport class SlackService {\n public static async incomingWebhook(\n params: IncomingWebhookRequest,\n ): Promise<any> {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: `SlackService.incomingWebhook`,\n url: params.options.url,\n normalizedUrl: `https://hooks.slack.com/services/:webhookId`,\n type: 'post',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'slack',\n type: 'external',\n },\n }\n\n const blocks = params.options.sections.map((section) => {\n let text\n let elements\n switch (section.type) {\n case 'section':\n text = {\n type: 'mrkdwn',\n text: section.text,\n }\n break\n case 'context':\n elements = [\n {\n type: 'mrkdwn',\n text: section.text,\n },\n ]\n break\n case 'header':\n text = {\n type: 'plain_text',\n text: section.text,\n emoji: true,\n }\n break\n }\n\n return {\n type: section.type,\n text,\n elements,\n }\n })\n\n const bodies: Array<{ blocks: any[] }> = []\n\n if (blocks.length > MAX_BLOCKS_PER_MESSAGE) {\n const blocksCopy = [...blocks]\n while (blocksCopy.length > 0) {\n bodies.push({\n blocks: blocksCopy.splice(0, MAX_BLOCKS_PER_MESSAGE),\n })\n }\n } else {\n bodies.push({\n blocks,\n })\n }\n\n for (let index = 0; index < bodies.length; index++) {\n // eslint-disable-next-line no-await-in-loop\n await request<void>({\n config: params.config,\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n body: bodies[index],\n type: 'json',\n responseType: 'none',\n })\n if (index < bodies.length - 1) {\n // https://api.slack.com/apis/rate-limits#rtm-posting-messages\n // eslint-disable-next-line no-await-in-loop\n await new Promise((resolve) => {\n setTimeout(resolve, 1000)\n })\n }\n }\n\n // if webhook failed we don't throw an error\n }\n\n /**\n * Looks up a Slack user by their email address.\n * Requires the config to provide a Slack Bot Token via config.auth.getToken().\n *\n * @returns The Slack user ID, or undefined if not found.\n */\n public static async lookupUserByEmail(\n params: SlackLookupUserByEmailParams,\n ): Promise<SlackLookupUserByEmailResponse | undefined> {\n const url = `${SLACK_API_BASE_URL}/users.lookupByEmail?email=${encodeURIComponent(params.params.email)}`\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: 'SlackService.lookupUserByEmail',\n url,\n normalizedUrl: `${SLACK_API_BASE_URL}/users.lookupByEmail`,\n type: 'get',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'slack',\n type: 'external',\n },\n }\n\n const response = await request<{ ok: boolean; user?: { id: string } }>({\n config: params.config,\n url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n responseType: 'json',\n })\n\n if (!response.ok || !response.body?.ok || !response.body?.user?.id) {\n return undefined\n }\n\n return { userId: response.body.user.id }\n }\n}\n"],
|
|
5
|
+
"mappings": "AAUA,SAAS,eAAe;AAGxB,MAAM,yBAAyB;AAE/B,MAAM,qBAAqB;AA0BpB,MAAM,aAAa;AAAA,EACxB,aAAoB,gBAClB,QACc;AACd,UAAM,iBAA4C;AAAA,MAChD,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,KAAK,OAAO,QAAQ;AAAA,QACpB,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;AAEA,UAAM,SAAS,OAAO,QAAQ,SAAS,IAAI,CAAC,YAAY;AACtD,UAAI;AACJ,UAAI;AACJ,cAAQ,QAAQ,MAAM;AAAA,QACpB,KAAK;AACH,iBAAO;AAAA,YACL,MAAM;AAAA,YACN,MAAM,QAAQ;AAAA,UAChB;AACA;AAAA,QACF,KAAK;AACH,qBAAW;AAAA,YACT;AAAA,cACE,MAAM;AAAA,cACN,MAAM,QAAQ;AAAA,YAChB;AAAA,UACF;AACA;AAAA,QACF,KAAK;AACH,iBAAO;AAAA,YACL,MAAM;AAAA,YACN,MAAM,QAAQ;AAAA,YACd,OAAO;AAAA,UACT;AACA;AAAA,MACJ;AAEA,aAAO;AAAA,QACL,MAAM,QAAQ;AAAA,QACd;AAAA,QACA;AAAA,MACF;AAAA,IACF,CAAC;AAED,UAAM,SAAmC,CAAC;AAE1C,QAAI,OAAO,SAAS,wBAAwB;AAC1C,YAAM,aAAa,CAAC,GAAG,MAAM;AAC7B,aAAO,WAAW,SAAS,GAAG;AAC5B,eAAO,KAAK;AAAA,UACV,QAAQ,WAAW,OAAO,GAAG,sBAAsB;AAAA,QACrD,CAAC;AAAA,MACH;AAAA,IACF,OAAO;AACL,aAAO,KAAK;AAAA,QACV;AAAA,MACF,CAAC;AAAA,IACH;AAEA,aAAS,QAAQ,GAAG,QAAQ,OAAO,QAAQ,SAAS;AAElD,YAAM,QAAc;AAAA,QAClB,QAAQ,OAAO;AAAA,QACf,KAAK,eAAe,OAAO;AAAA,QAC3B,QAAQ,eAAe,OAAO;AAAA,QAC9B,gBAAgB;AAAA,QAChB,MAAM,OAAO,KAAK;AAAA,QAClB,MAAM;AAAA,QACN,cAAc;AAAA,MAChB,CAAC;AACD,UAAI,QAAQ,OAAO,SAAS,GAAG;AAG7B,cAAM,IAAI,QAAQ,CAAC,YAAY;AAC7B,qBAAW,SAAS,GAAI;AAAA,QAC1B,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EAGF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,aAAoB,kBAClB,QACqD;AACrD,UAAM,MAAM,GAAG,kBAAkB,8BAA8B,mBAAmB,OAAO,OAAO,KAAK,CAAC;AACtG,UAAM,iBAA4C;AAAA,MAChD,QAAQ;AAAA,QACN,MAAM;AAAA,QACN;AAAA,QACA,eAAe,GAAG,kBAAkB;AAAA,QACpC,MAAM;AAAA,MACR;AAAA,MACA,QAAQ,OAAO,OAAO,SAAS,UAAU;AAAA,MACzC,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAEA,UAAM,WAAW,MAAM,QAAgD;AAAA,MACrE,QAAQ,OAAO;AAAA,MACf;AAAA,MACA,QAAQ,eAAe,OAAO;AAAA,MAC9B,gBAAgB;AAAA,MAChB,cAAc;AAAA,IAChB,CAAC;AAED,QAAI,CAAC,SAAS,MAAM,CAAC,SAAS,MAAM,MAAM,CAAC,SAAS,MAAM,MAAM,IAAI;AAClE,aAAO;AAAA,IACT;AAEA,WAAO,EAAE,QAAQ,SAAS,KAAK,KAAK,GAAG;AAAA,EACzC;AACF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { Telemetry } from '@camunda/ccma-shared-types';
|
|
2
|
+
import type { RequestBaseParams } from '../../types/general.types.js';
|
|
3
|
+
export interface TelemetryPostRequest extends RequestBaseParams {
|
|
4
|
+
params: {
|
|
5
|
+
data: Telemetry.EncodedData;
|
|
6
|
+
};
|
|
7
|
+
}
|
|
8
|
+
export interface TelemetryPingRequest extends RequestBaseParams {
|
|
9
|
+
params: {
|
|
10
|
+
data: Telemetry.PingRequest;
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
export declare class TelemetryService {
|
|
14
|
+
static post(params: TelemetryPostRequest): Promise<Telemetry.PostResponse>;
|
|
15
|
+
static ping(params: TelemetryPingRequest): Promise<Telemetry.PostResponse>;
|
|
16
|
+
}
|