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<string, unknown> = {}) {
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: ')
}
}
}