export { API_TOKEN_SETUP_URL, DEFAULT_API_TOKEN_SECRET, FLY_API_BASE_URL, FLY_API_HOST, FLY_GRAPHQL_URL, FlyApiError, MACHINES_API_BASE_URL, MACHINES_HOST, MACHINES_OPENAPI_SPEC, assertNever, flyApiAuthHeaders, graphqlAuthHeaders, machinesAuthHeaders, machinesCurrentToken, machinesRequest, mutationPreview, parseAction, requestFlyApi, requestGraphql, requireConfirm, resolveApiTokenSecretName, resolveOrganizationSlug, secretSetupUrl, } from './fly-core.ts' export { listOrganizations, getOrganization } from './organizations.ts' export { listApps, getApp } from './apps.ts' export { listMachines, getMachine, startMachine, stopMachine, destroyMachine, } from './machines.ts' export { default as machineCount } from './machine-count.ts' export { default as appMachines } from './app-machines.ts' export { analyzeLogEntries, fetchAppLogs, logsToJsonl, normalizeLogEntry, default as appLogs, } from './logs.ts' export { appMetricQueries, prometheusQuery, prometheusQueryRange, runMetricQueries, default as metrics, } from './metrics.ts' export { smokeTest } from './smoke-test.ts' export { runMachineStatus } from './scheduled-status.ts' export { default as docs } from './docs.ts' import { getApp, listApps } from './apps.ts' import appMachines from './app-machines.ts' import docs from './docs.ts' import { assertNever, parseAction, requestGraphql } from './fly-core.ts' import graphql from './graphql.ts' import appLogs from './logs.ts' import machineCount from './machine-count.ts' import { destroyMachine, getMachine, listMachines, startMachine, stopMachine, } from './machines.ts' import metrics from './metrics.ts' import { getOrganization, listOrganizations } from './organizations.ts' import { runMachineStatus } from './scheduled-status.ts' import { smokeTest } from './smoke-test.ts' const actions = { 'smoke-test': smokeTest, docs, organizations: listOrganizations, 'list-organizations': listOrganizations, 'get-organization': getOrganization, apps: listApps, 'list-apps': listApps, 'get-app': getApp, machines: listMachines, 'list-machines': listMachines, 'get-machine': getMachine, 'start-machine': startMachine, 'stop-machine': stopMachine, 'destroy-machine': destroyMachine, 'machine-count': machineCount, 'app-machines': appMachines, logs: appLogs, metrics, graphql, 'scheduled-status': runMachineStatus, request: requestGraphql, } as const export type FlyAction = keyof typeof actions const actionNames = Object.keys(actions) as FlyAction[] /** * Root dispatcher for Fly.io helpers. Defaults to the read-only smoke test. * @example * import fly from 'kody:@kody/fly' * const result = await fly({ action: 'list-apps', organizationSlug: 'my-org' }) */ export default async function fly(input: Record = {}) { const action = parseAction(input.action, actionNames, 'smoke-test', 'Fly') const handler = actions[action] switch (action) { case 'smoke-test': case 'docs': case 'organizations': case 'list-organizations': case 'get-organization': case 'apps': case 'list-apps': case 'get-app': case 'machines': case 'list-machines': case 'get-machine': case 'start-machine': case 'stop-machine': case 'destroy-machine': case 'machine-count': case 'app-machines': case 'logs': case 'metrics': case 'graphql': case 'scheduled-status': case 'request': return await handler(input as never) default: { assertNever(action, 'Unhandled Fly action: ') } } }