UNPKG

jamsocket

Version:

A CLI for the Jamsocket platform

265 lines (264 loc) 8.75 kB
import { EventStreamReturn } from './lib/request'; import type { JamsocketConfig } from './jamsocket-config'; import * as https from 'https'; export type CheckAuthResult = { status: 'ok'; accounts: string[]; is_admin: boolean; }; export type SpawnRequestBody = { env?: Record<string, string>; grace_period_seconds?: number; lock?: string; service_environment?: string; }; export type V1Status = 'Loading' | 'Starting' | 'Ready' | 'Swept' | 'Exited' | 'Terminated' | 'Failed' | 'ErrorLoading' | 'ErrorStarting' | 'TimedOutBeforeReady' | 'Lost'; export type V2Status = 'scheduled' | 'loading' | 'starting' | 'waiting' | 'ready' | 'terminating' | 'hard-terminating' | 'terminated'; export type ConnectResourceLimits = { cpu_period?: number; cpu_period_percent?: number; cpu_time_limit?: number; memory_limit_bytes?: number; disk_limit_bytes?: number; }; export type JamsocketConnectRequestBody = { key?: string; spawn?: boolean | { tag?: string; cluster?: string; lifetime_limit_seconds?: number; max_idle_seconds?: number; executable?: { mount?: string | boolean; env?: Record<string, string>; resource_limits?: ConnectResourceLimits; }; }; user?: string; auth?: Record<string, any>; }; export type JamsocketConnectResponse = { backend_id: string; spawned: boolean; status: V2Status; token: string; url: string; secret_token?: string | null; status_url: string; ready_url: string; }; export type PlaneTerminationKind = 'soft' | 'hard'; export type PlaneTerminationReason = 'swept' | 'external' | 'keyexpired' | 'lost' | 'startuptimeout' | 'internalerror'; export type PublicV2State = { status: 'scheduled'; time: string; } | { status: 'loading'; time: string; } | { status: 'starting'; time: string; } | { status: 'waiting'; time: string; } | { status: 'ready'; time: string; } | { status: 'terminating'; time: string; termination_reason: PlaneTerminationReason; } | { status: 'hard-terminating'; time: string; termination_reason: PlaneTerminationReason; } | { status: 'terminated'; time: string; termination_reason?: PlaneTerminationReason | null; termination_kind?: PlaneTerminationKind | null; exit_error?: boolean | null; }; export type V2State = { status: 'scheduled'; time: string; } | { status: 'loading'; time: string; } | { status: 'starting'; time: string; } | { status: 'waiting'; time: string; } | { status: 'ready'; time: string; } | { status: 'terminating'; time: string; termination_reason: PlaneTerminationReason; } | { status: 'hard-terminating'; time: string; termination_reason: PlaneTerminationReason; } | { status: 'terminated'; time: string; termination_reason?: PlaneTerminationReason | null; termination_kind?: PlaneTerminationKind | null; exit_code?: number | null; last_status: V2Status; }; export type UpdateEnvironmentBody = { image_tag: string; }; export interface ServiceImageResult { status: 'ok'; imageName: string; } export interface ServiceListResult { services: Array<string>; } export interface ServiceCreateResult { status: 'ok'; } export type Image = { repository: string; digest: string; tag: string; upload_time: string; }; export interface ServiceImagesResult { images: Image[]; } export interface Environment { name: string; image_tag: string; cluster: string; created_at: string; last_spawned_at: string | null; } export interface ServiceInfoResult { name: string; account_name: string; created_at: string; last_spawned_at: string | null; last_image_upload_time: string | null; last_image_digest: string | null; image_name: string; environments: Environment[]; } export interface ServiceDeleteResult { status: 'ok'; } export interface EnvironmentUpdateResult { status: 'ok'; } export interface SpawnResult { url: string; name: string; ready_url: string; status_url: string; spawned: boolean; status: V1Status | null; } export type BackendWithStatus = { id: string; created_at: string; service_name: string; cluster_name: string; account_name: string; status?: V2State; key?: string; }; export interface RunningBackendsResult { running_backends: BackendWithStatus[]; } export interface TerminateResult { status: 'ok'; } export interface TerminateAllBackendsBody { before: string; hard: boolean; dry_run: boolean; } export interface TerminateAllBackendsResult { backend_count: number; terminated_count: number; is_complete: boolean; } export interface BackendInfoResult { id: string; created_at: string; service_name: string; cluster_name: string; account_name: string; statuses: V2State[]; image_digest: string; key?: string | null; environment_name?: string | null; max_mem_bytes?: number | null; } export interface UserSessionRevokeResult { status: 'ok'; } export interface CliLoginAttemptResult { token: string; } export interface CompleteCliLoginResult { uuid: string; user_id: string; user_agent: string; created_at: string; expiration: string; token: string; user_is_admin?: boolean; user_email?: string; } export declare class HTTPError extends Error { status: number; code: string | null; constructor(status: number, code: string | null, message: string); } export declare const AUTH_ERROR_HTTP_CODES: Set<number>; export declare class AuthenticationError extends HTTPError { status: number; code: string | null; constructor(status: number, code: string | null, message: string); } export declare class JamsocketApi { private apiBase; private options; constructor(apiBase: string, options?: https.RequestOptions); static fromEnvironment(): JamsocketApi; getAppBaseUrl(): string; getLoginUrl(loginToken: string): string; private makeRequest; private makeAuthenticatedRequest; private makeStreamRequest; private makeAuthenticatedStreamRequest; checkAuthToken(authToken: string): Promise<CheckAuthResult>; checkAuthConfig(config: JamsocketConfig): Promise<CheckAuthResult>; serviceImage(accountName: string, serviceName: string, config: JamsocketConfig): Promise<ServiceImageResult>; serviceCreate(accountName: string, name: string, config: JamsocketConfig): Promise<ServiceCreateResult>; serviceDelete(accountName: string, serviceName: string, config: JamsocketConfig): Promise<ServiceDeleteResult>; serviceInfo(accountName: string, serviceName: string, config: JamsocketConfig): Promise<ServiceInfoResult>; serviceList(accountName: string, config: JamsocketConfig): Promise<ServiceListResult>; updateEnvironment(accountName: string, service: string, environment: string | null, config: JamsocketConfig, body: UpdateEnvironmentBody): Promise<EnvironmentUpdateResult>; spawn(accountName: string, serviceName: string, config: JamsocketConfig, body: SpawnRequestBody): Promise<SpawnResult>; connect(accountName: string, serviceName: string, serviceEnvironment: string | null, config: JamsocketConfig, body?: JamsocketConnectRequestBody): Promise<JamsocketConnectResponse>; listRunningBackends(accountName: string, config: JamsocketConfig): Promise<RunningBackendsResult>; imagesList(accountName: string, serviceName: string, config: JamsocketConfig): Promise<ServiceImagesResult>; streamLogs(backend: string, config: JamsocketConfig, callback: (line: string) => void): EventStreamReturn; streamMetrics(backend: string, config: JamsocketConfig, callback: (line: string) => void): EventStreamReturn; streamStatus(backend: string, callback: (statusMessage: PublicV2State) => void, config?: JamsocketConfig): EventStreamReturn; status(backend: string, config?: JamsocketConfig): Promise<PublicV2State>; terminate(backend: string, hard: boolean, config: JamsocketConfig): Promise<TerminateResult>; terminateAllBackends(accountName: string, serviceName: string, body: TerminateAllBackendsBody, config: JamsocketConfig): Promise<TerminateAllBackendsResult>; backendInfo(backend: string, config: JamsocketConfig): Promise<BackendInfoResult>; startLoginAttempt(): Promise<CliLoginAttemptResult>; completeLoginAttempt(token: string, code: string): Promise<CompleteCliLoginResult>; revokeUserSession(userSessionId: string, config: JamsocketConfig): Promise<UserSessionRevokeResult>; streamLoginStatus(loginToken: string): Promise<boolean>; }