Skip to content

Built for people who want to own their automations. Join the waitlist for an invite.

Package listing

@kody/fly

src/apps.ts

40 lines · 1.3 KB · TypeScript
import { machinesAppShow, machinesAppsList, summarizeApp } from './fly-core.ts'
import type { FlyAppsInput } from './types.ts'

export async function listApps(params: FlyAppsInput = {}) {
	const result = await machinesAppsList(params)
	const apps = result.apps.map(summarizeApp)
	return {
		organization: {
			slug: result.organization.slug,
			...(result.organization || {}),
		},
		count: apps.length,
		totalApps: result.totalApps,
		apps,
	}
}

export async function getApp(params: FlyAppsInput = {}) {
	const appName = String(params.appName || params.app || params.name || '').trim()
	if (!appName) throw new Error('appName is required.')
	const app = await machinesAppShow(appName, params)
	return { app: summarizeApp(app), raw: app }
}

/**
 * List Fly apps for an organization via the Machines REST API.
 * When `organizationSlug` is omitted, uses the only org visible to the token.
 * @returns Organization metadata plus summarized app list and count.
 * @example
 * import apps from 'kody:@kody/fly/apps'
 * const result = await apps({ organizationSlug: 'my-org' })
 * // => { organization: {...}, count: 3, apps: [...] }
 */
export default async function apps(params: FlyAppsInput = {}) {
	const appName = String(params.appName || params.app || params.name || '').trim()
	if (appName) {
		return await getApp(params)
	}
	return await listApps(params)
}