export { ALLOWED_HOSTS_QUERY, API_KEY_SETUP_URL, APPLICATION_KEY_SETUP_URL, DATADOG_API_HOSTS, DEFAULT_API_HOST, DEFAULT_API_KEY_SECRET, DEFAULT_APP_KEY_SECRET, DEFAULT_SITE, DatadogApiError, assertNever, datadogAuthHeaders, datadogRequest, mutationPreview, parseAction, requireConfirm, resolveApiBaseUrl, resolveApiHost, resolveApiKeySecretName, resolveApplicationKeySecretName, resolveSite, secretSetupUrl, } from './core.ts' export { validateKeys } from './validate.ts' export { listMonitors, getMonitor, searchMonitors, createMonitor, updateMonitor, deleteMonitor, muteMonitor, unmuteMonitor, } from './monitors.ts' export { listIncidents, getIncident, searchIncidents, createIncident, updateIncident, deleteIncident, } from './incidents.ts' export { searchLogs } from './logs.ts' export { listDashboards, getDashboard, createDashboard, updateDashboard, deleteDashboard, } from './dashboards.ts' export { smokeTest } from './smoke-test.ts' export { runMonitorStatus } from './scheduled-status.ts' import { assertNever, parseAction } from './core.ts' import { createDashboard, deleteDashboard, getDashboard, listDashboards, updateDashboard, } from './dashboards.ts' import { createIncident, deleteIncident, getIncident, listIncidents, searchIncidents, updateIncident, } from './incidents.ts' import { searchLogs } from './logs.ts' import { createMonitor, deleteMonitor, getMonitor, listMonitors, muteMonitor, searchMonitors, unmuteMonitor, updateMonitor, } from './monitors.ts' import { runMonitorStatus } from './scheduled-status.ts' import { smokeTest } from './smoke-test.ts' import { validateKeys } from './validate.ts' const actions = { 'smoke-test': smokeTest, validate: validateKeys, 'list-monitors': listMonitors, monitors: listMonitors, 'get-monitor': getMonitor, 'search-monitors': searchMonitors, 'create-monitor': createMonitor, 'update-monitor': updateMonitor, 'delete-monitor': deleteMonitor, 'mute-monitor': muteMonitor, 'unmute-monitor': unmuteMonitor, 'list-incidents': listIncidents, incidents: listIncidents, 'get-incident': getIncident, 'search-incidents': searchIncidents, 'create-incident': createIncident, 'update-incident': updateIncident, 'delete-incident': deleteIncident, 'search-logs': searchLogs, logs: searchLogs, 'list-dashboards': listDashboards, dashboards: listDashboards, 'get-dashboard': getDashboard, 'create-dashboard': createDashboard, 'update-dashboard': updateDashboard, 'delete-dashboard': deleteDashboard, 'scheduled-status': runMonitorStatus, } as const export type DatadogAction = keyof typeof actions const actionNames = Object.keys(actions) as DatadogAction[] /** * Root dispatcher for Datadog helpers. Defaults to the read-only smoke test. * @example * import datadog from 'kody:@kody/datadog' * const result = await datadog({ action: 'list-monitors' }) */ export default async function datadog(input: Record = {}) { const action = parseAction(input.action, actionNames, 'smoke-test', 'Datadog') const handler = actions[action] switch (action) { case 'smoke-test': case 'validate': case 'list-monitors': case 'monitors': case 'get-monitor': case 'search-monitors': case 'create-monitor': case 'update-monitor': case 'delete-monitor': case 'mute-monitor': case 'unmute-monitor': case 'list-incidents': case 'incidents': case 'get-incident': case 'search-incidents': case 'create-incident': case 'update-incident': case 'delete-incident': case 'search-logs': case 'logs': case 'list-dashboards': case 'dashboards': case 'get-dashboard': case 'create-dashboard': case 'update-dashboard': case 'delete-dashboard': case 'scheduled-status': return await handler(input as never) default: { assertNever(action, 'Unhandled Datadog action: ') } } }