UNPKG

@builder.io/dev-tools

Version:

Builder.io Visual CMS Devtools

95 lines (94 loc) 4.24 kB
import type { DevToolsSys } from "@builder.io/dev-tools/core"; import { type FusionConfig, type WorkspaceFolder, type InitState, type InitStateStep, type InitStatusLog } from "$/ai-utils"; type ValidatedWorkspaceFolder = WorkspaceFolder & Required<Pick<WorkspaceFolder, "name" | "path">>; type WorkspaceFolderWithRepoInfo = ValidatedWorkspaceFolder & Required<Pick<WorkspaceFolder, "repoName" | "repoUrl">>; import type { Credentials } from "../credentials"; import { type GitBackupDownloadResult } from "../backup"; export interface InitConfig { fusionConfig: FusionConfig; credentials: Credentials; sys: DevToolsSys; debug?: boolean; sentryTags?: Record<string, string>; } export interface InitStatus { message: string; error?: string; } export declare class InitStateMachine { logIdCounter: number; initStatusLogs: InitStatusLog[]; sys: DevToolsSys; config: InitConfig; /** * @deprecated use addInitLog instead. Do not use this directly. */ debug: boolean; initState: InitState; constructor(config: InitConfig); checkout(branchName: string, ref: string, repoPath: string): Promise<boolean>; execAsync(exec: string, args: string[], cwd?: string, retry?: number): Promise<string>; git(args: string[], cwd?: string, retry?: number, timeout?: number): Promise<string>; performBackup({ sys, credentials, fusionConfig, volumePath, repositories, isConnectedToProvider, forcedFullBackup, }: { sys: DevToolsSys; credentials: Credentials; fusionConfig: FusionConfig; volumePath: string; repositories: ValidatedWorkspaceFolder[]; isConnectedToProvider: boolean; forcedFullBackup: boolean; }): Promise<void>; performRegularBackup(args: Omit<Parameters<typeof this.performBackup>[0], "isConnectedToProvider" | "forcedFullBackup">): Promise<void>; performOfflineBackup(args: Omit<Parameters<typeof this.performBackup>[0], "isConnectedToProvider" | "forcedFullBackup">): Promise<void>; performForcedFullBackup(args: Omit<Parameters<typeof this.performBackup>[0], "isConnectedToProvider" | "forcedFullBackup">): Promise<void>; init(): Promise<boolean>; addInitLog(type: "status" | "log" | "error" | "complete", message: string, options?: { step?: InitStateStep; error?: string; success?: boolean; }): void; clearInitLogs(): void; hasFilesButNoGit(repoPath: string): Promise<boolean>; step1CheckDirectories(volumePath: string, repositories: ValidatedWorkspaceFolder[]): Promise<void>; step2ConfigureGitRepositories(volumePath: string, repositories: ValidatedWorkspaceFolder[]): Promise<void>; step3ConfigureGitUser(volumePath: string, repositories: ValidatedWorkspaceFolder[]): Promise<void>; step4CollectRepoInfo(config: InitConfig, volumePath: string, repositories: ValidatedWorkspaceFolder[]): Promise<void>; private isGitConfigured; private getGitRemoteUrl; private sanitizeGitRemoteUrl; /** * Check if the repository URL is from a standard git hosting provider */ private isStandardGitHost; /** * Check if the repository host is reachable via network * Performs DNS resolution and TCP connection check */ private checkHostConnectivity; private checkConnectivityDirect; private checkConnectivityViaProxy; private cleanupLockFiles; validateGitRepo(repoPath: string): Promise<void>; /** * If a backup is available, perform a backup recovery (and throw if it fails and cannot be recovered from). * If no backup is available, do nothing. */ private restoreFromPartialBackup; private initializeGitRepo; private refreshRepoConfig; runInitializationCommand({ repo, tempCloningDir, repoPath, initCommand, }: { repo: ValidatedWorkspaceFolder; tempCloningDir: string; repoPath: string; initCommand: string; }): Promise<{ outcome: boolean; error?: Error; }>; cloneRepository({ repo, repoPath, backupResult, }: { repo: WorkspaceFolderWithRepoInfo; repoPath: string; backupResult: GitBackupDownloadResult | undefined; }): Promise<boolean>; } export {};